【发布时间】:2017-05-03 08:19:02
【问题描述】:
我有一个看起来像这样的模型(不完全是):
class Child
{
public virtual Parent AssignedParent { get; set; }
}
class Container
{
public virtual ICollection<Child> Children { get; set; }
public Child ActiveChild { get; set; }
}
换句话说:一个容器可以有很多活跃的孩子,但最多只有一个是活跃的。这很好用。
但现在我需要检查这样的容器是否更改了 activechild 属性。 DC.ChangeTracker.HasChanges() 执行正确,但如果我得到带有 DC.ChangeTracker.Entries() 的条目,我看到它没有改变。
此属性不在 CurrentValues 或 OriginalValues 集合中,看起来没问题,因为它是一个导航属性。
但是我怎样才能检查这个有没有改变呢?
【问题讨论】:
-
拨打
SaveChanges()会发生什么?更改是否保存到数据库中?为什么要查看ChangeTracker?您是否遇到其他问题并认为更改跟踪存在问题? -
是的,他们得救了。所以在某个地方,在内部,这是被跟踪的。但我不知道如何处理它。我需要知道是否仅更改了特定属性或其他任何内容。我的类型相当复杂(嵌套对象在支持字段中序列化为 json)。所以我想依靠EF不要深入遍历所有属性。