如何在Linq-to-Sql中提交之前获取下一个身份ID?

Dmi*_*try 2 linq-to-sql

我想获取下一个身份ID,然后将其记录在某处。只有之后,我才要调用SubmitChanges()。

Ste*_*ven 5

DataContextin 包装在数据库事务中,并调用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();
    }
}
Run Code Online (Sandbox Code Playgroud)