linq insert:获取行号

时间:2011-06-03 18:08:17

标签: c# linq linq-to-sql

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

感谢您的建议。

3 个答案:

答案 0 :(得分:2)

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

例如:

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

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

    int pkValue = entity.PKColumn
}

答案 1 :(得分:1)

使用LINQ-to-SQL,它会在保存期间自动更新任何IDENTITY(etc)属性,所以只需查看.Id(或其他)。

知道它发生了:更新等发生在交易中;该事务必须已经承诺在没有异常的情况下退出该方法。如果你有一个外部TransactionScope(或类似的),那么由你来承诺;简而言之 - 直到你确实提交你有一个幻影记录。因此,在您提交所有交易之前,请避免将新ID传递到任何位置。

答案 2 :(得分:1)

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

此外,如果您需要有关受影响记录数量的更多手动信息等,您可以查看GetChangeSet()see what changes it has tracked上的DataContext方法。