2010-09-21 41 views

回答

0

,你需要在數據庫中添加lastModified日期列,並得到它,如果不和增量標識列

其他明智的,做的更好SubmitChanges()並獲得nextID

+0

這就是這一點,我需要獲得新的ID之前提交 – Dmitry 2010-09-21 16:26:32

1

包住整個事情在一個事務中,做一個SELECT IDENT_CURRENT('table_name')然後提交你的修改,提交事務。如果您在SELECT IDENT_CURRENT之後並且在插入應該給予您正確的標識值之前鎖定應該阻止其他人插入記錄的表。

+0

聽起來不錯,但我需要做的全部在一個TRAN ,不鎖定( – Dmitry 2010-09-21 16:28:29

4

DataContext包裝在數據庫事務中並調用SubmitChanges將更改寫入該事務中的數據庫。這樣,您就可以得到自動生成的ID,同時能夠保持操作的事務:

using (var con = new SqlConnection(conStr)) 
{ 
    con.Open(); 
    using (var tran = con.BeginTransaction()) 
    { 
     using (var db = new YourDataContext(con)) 
     { 
      // Setting the transaction is needed in .NET 3.5. 
      // It's a bug in L2S and was fixed in .NET 4.0. 
      db.Transaction = tran; 

      var entity = new MyEntity(); 

      db.MyEntities.InsertOnSubmit(entity); 

      db.SubmitChanges(); 

      var id = entity.Id; 

      // Do something useful with this id 
     } 

     tran.Commit(); 
    } 
} 
相關問題