sql >> Databáze >  >> RDS >> Sqlserver

Linq To Sql a identity_insert

Další možností je zabalit všechna vaše volání Linq2Sql do TransactionScope(). To by je mělo všechny přinutit běžet ve stejném připojení.

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

I když, pokud se snažíte udělat něco jako:

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

pravděpodobně narazíte na další problémy, zejména pokud má sloupec identity atribut IsDbGenerated nastaven na hodnotu true. Příkaz SQL generovaný Linq2Sql nebude vědět, že má obsahovat sloupec identity a hodnotu.



  1. Chyba syntaxe MySQL na DELIMITER před CREATE TRIGGER

  2. Každá odvozená tabulka musí mít svůj vlastní alias - chyba z kombinace sestupně MySQL

  3. 10 hlavních důvodů, proč používat Access a Excel společně

  4. Vystoupejte výš v cloudu s MariaDB SkySQL