sql >> Database teknologi >  >> RDS >> Sqlserver

Linq til SQL og identity_insert

En anden mulighed er at pakke alle dine Linq2Sql-kald i en TransactionScope(). Dette burde tvinge dem alle til at køre i samme forbindelse.

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

Selvom du prøver at gøre noget som:

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

du vil sandsynligvis støde på andre problemer, især hvis identitetskolonnen har IsDbGenerated-attributten sat til sand. SQL-kommandoen genereret af Linq2Sql vil ikke vide at inkludere identitetskolonnen og værdien.



  1. Hvordan make_timestamptz() virker i PostgreSQL

  2. Manipulering af samlinger

  3. VBA-kode til at hente data fra Mysql DB i Mac Excel 2011

  4. sqoop opdelt efter indstilling giver fejl, mens du bruger en afledt kolonne i opdeling efter mulighed