Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

लिंक टू एसक्यूएल और आइडेंटिटी_इन्सर्ट

एक अन्य विकल्प अपने सभी 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 विशेषता सत्य पर सेट है। Linq2Sql द्वारा उत्पन्न SQL कमांड को पहचान कॉलम और मान को शामिल करना नहीं पता होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2005 ROW_NUMBER () बिना ORDER BY

  2. क्या एक कनेक्शन के साथ कई एसक्यूएल कमांड निष्पादित करना बेहतर है, या हर बार फिर से कनेक्ट करना बेहतर है?

  3. SQL सर्वर (T-SQL उदाहरण) में 'datetime2' को 'datetimeoffset' में बदलें

  4. SQL सर्वर सम्मिलित करें यदि मौजूद नहीं है

  5. SQL Server 2008 डेटाबेस में सभी तालिकाओं के नाम प्राप्त करने की क्वेरी