linq-insert:获取行号

本文关键字:获取 linq-insert | 更新日期: 2023-09-27 17:58:25

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

谢谢你的建议。

linq-insert:获取行号

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

例如:

using (var dc = new MyDataContext())
{
    MyEntity entity = new MyEntity();
    dc.MyEntities.InsertOnSubmit(entity);
    dc.SubmitChanges();
    int pkValue = entity.PKColumn
}

使用LINQ to SQL,它将在保存过程中自动更新任何IDENTITY(等)属性,所以只需查看.Id(或其他)即可。

重新知道它发生了:更新等发生在交易中;该事务必须已承诺无异常地退出该方法。如果你有一个外部TransactionScope(或类似的),那么由你来提交;简而言之,在你提交之前,你有一个虚幻的记录。因此,在提交所有事务之前,请避免将新id传递到任何地方。

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

此外,如果您想要有关受影响记录数量等的更多手动信息,您可以查看DataContext上的GetChangeSet()方法,以查看它跟踪了哪些更改。