我可以在LINQ to SQL中访问数据实体的对象状态吗?

Pie*_*ler 4 c# linq-to-sql

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

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

DataContext.Refresh未附加对象上调用when时,System.ArgumentException由于DataContext对其不熟悉,因此我得到了。

有没有一种方法可以获取单个对象的跟踪状态(如此处定义:http : //msdn.microsoft.com/en-us/library/bb386982.aspx),因此我可以弄清楚它是否是修改后的对象或新对象?

问候

Mag*_*nus 5

您可以这样做:

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
Run Code Online (Sandbox Code Playgroud)