sql >> Database >  >> RDS >> Sqlserver

Linq To Sql en identity_insert

Een andere optie is om al uw Linq2Sql-aanroepen in een TransactionScope() te stoppen. Dit zou ze allemaal moeten dwingen om in dezelfde verbinding te werken.

using System.Transactions; // Be sure to add a reference to System.Transactions.dll to your project.

       // ... in a method somewhere ...
       using (System.Transaction.TransactionScope trans = new TransactionScope())
       {
          using(YourDataContext context = new YourDataContext())
          {
             context.ExecuteCommand("SET IDENTITY_INSERT MyTable ON");

             context.ExecuteCommand("yourInsertCommand");

             context.ExecuteCommand("SET IDENTITY_INSERT MyTable OFF");
          }
          trans.Complete();
       }
       // ...

Hoewel, als je iets probeert te doen als:

context.ExecuteCommand("SET IDENTITY_INSERT MyTable ON");
context.MyTable.InsertOnSubmit(myTableObject)
context.SubmitChanges()
context.ExecuteCommand("SET IDENTITY_INSERT MyTable OFF");

u zult waarschijnlijk andere problemen tegenkomen, vooral als in de identiteitskolom het kenmerk IsDbGenerated is ingesteld op true. Het SQL-commando dat door Linq2Sql wordt gegenereerd, weet niet dat het de identiteitskolom en -waarde moet bevatten.



  1. PHP foreach gebruikersscript lijkt apache te laten hangen

  2. hoe de mysql-kolomwaarde in te vullen op basis van een formule?

  3. willekeurige 2 records volgens positie en volgorde per positie

  4. MySQL-tekenreeks vervangen