2010-09-21 57 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(); 
    } 
} 
相关问题