我想获取下一个身份ID,然后将其记录到某处。只有在之后我才能调用SubmitChanges()。
答案 0 :(得分: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();
}
}
答案 1 :(得分:1)
将整个事物包裹在事务中,执行SELECT IDENT_CURRENT('table_name')然后提交更改,提交事务。如果您锁定了表格,该表格会阻止其他人在您的SELECT IDENT_CURRENT之后插入记录,并且在插入之前应该为您提供正确的标识值。
答案 2 :(得分:0)
您需要在数据库中添加lastModified
日期列并获取它,如果没有,则增加标识列
其他明智的做法是SubmitChanges()
并获得nextID