是否可以在 LINQ to SQL 中访问数据实体的对象状态

本文关键字:数据 访问 实体 状态 对象 SQL LINQ to 是否 | 更新日期: 2023-09-27 17:56:14

Hi我有一种通过调用DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, Entity);来重置数据对象的方法。

Catch 是传递给该方法的某些对象是来自数据上下文并已更改的对象,但其他一些对象是新对象。新对象尚未附加到数据上下文,并且正在被丢弃。

当在未附加的对象上调用DataContext.Refresh时,我得到一个System.ArgumentException,因为 DataContext 不熟悉它。

有没有办法获取单个对象的跟踪状态(如此处定义:http://msdn.microsoft.com/en-us/library/bb386982.aspx),以便我可以确定它是修改的对象还是新对象?

问候

是否可以在 LINQ to SQL 中访问数据实体的对象状态

你可以

这样做:

var changes = DbContext.GetChangeSet();
if(changes.Updates.Contains(EntityToCheck))
  //Changed state
else if(changes.Inserts.Contains(EntityToCheck))
  //New state
else if(changes.Deletes.Contains(EntityToCheck))
  //Delete state