sql >> Databasteknik >  >> RDS >> Sqlserver

Linq till SQL och identity_insert

Ett annat alternativ är att lägga in alla dina Linq2Sql-anrop i en TransactionScope(). Detta bör tvinga dem alla att köra i samma anslutning.

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();
       }
       // ...

Men om du försöker göra något som:

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

du kommer förmodligen stöta på andra problem, särskilt om identitetskolumnen har IsDbGenerated-attributet satt till true. SQL-kommandot som genereras av Linq2Sql kommer inte att inkludera identitetskolumnen och -värdet.



  1. Lagra php datetime i mysql-databasen

  2. Hantera e-postbekräftelse under registrering i kolv

  3. PHP - Använder PDO med IN-klausul array

  4. Wordpress Fatalt fel:Oupptäckt fel:Anrop till odefinierad funktion mysql_connect() i /wp-includes/wp-db.php:1570