Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Link To Sql и identity_insert

Друг вариант е да обвиете всичките си Linq2Sql извиквания в TransactionScope(). Това трябва да ги принуди да работят в една и съща връзка.

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

Въпреки това, ако се опитвате да направите нещо като:

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

вероятно ще се натъкнете на други проблеми, особено ако колоната за самоличност има атрибута IsDbGenerated, зададен на true. SQL командата, генерирана от Linq2Sql, няма да знае да включи колоната и стойността за идентичност.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избера само последния запис в таблица?

  2. Само един израз може да бъде посочен в списъка за избор, когато подзаявката не е въведена с EXISTS

  3. GitHub Commit Error:Разрешението е отказано фатално:Не може да се обработи път ~/App_Data/aspnet-MyProject.mdf

  4. Инсталация на Business Intelligence Development Studio 2008

  5. BULK INSERT липсва последният ред?