linq-insert:获取行号
本文关键字:获取 linq-insert | 更新日期: 2023-09-27 17:58:25
我有一个表,主键作为标识列。我正在用linq对sql进行插入,我想知道是否有方法返回插入的行的ID,以及我们如何确定插入发生了。
谢谢你的建议。
调用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()
方法,以查看它跟踪了哪些更改。