2011-06-03 81 views
2

我有一个主键作为标识列的表。我正在用linq-to-sql做一个插入,我想知道是否有方法返回插入的行的ID,以及我们如何确定插入是否发生。linq插入:获取行号

感谢您的建议。

回答

2

用于插入的实体的主键属性将在使用数据库中的ID调用SubmitChanges之后更新。

例:

using (var dc = new MyDataContext()) 
{ 
    MyEntity entity = new MyEntity(); 

    dc.MyEntities.InsertOnSubmit(entity); 
    dc.SubmitChanges(); 

    int pkValue = entity.PKColumn 
} 
1

使用LINQ到SQL它会在自动保存,所以只看.Id(或其他)任何更新IDENTITY(等)的性质。

知道它发生了:更新等事务发生在一个事务中;该交易必须承诺已经摆脱该方法而没有例外。如果你有一个外部TransactionScope(或类似),那么它取决于你提交;总之 - 直到你确实承诺你有一个幻影记录。因此,请避免在任何地方传递该新ID,直到您承诺完成所有交易。

1

插入记录的标识应自动填充为插入添加到DataContext的对象。只需检查该对象上的ID。

此外,你可以看看在DataContextGetChangeSet()方法see what changes it has tracked如果要了解受影响的记录数等详细信息手册..