我有一个包含另一个类的对象的类:
public class Container
{
public BindingList<Item> Items { get; set; }
}
public class Item
{
...
}
的对象Container
附加到DbContext
. 我想覆盖DbContext's
SaveChanges()
通过 WCF 服务发送所有更改。
原始属性没有问题。它们反映在Entries
. Item
但是如果一个和它的变化之间的关系Container
(例如一个新的项目被添加或一个现有的项目被删除),在ChangeTracker 中没有关于它的条目。
我可以ForeignKey
在 Item 类中添加一个来强制Modified
输入,但这对我没有多大帮助,因为我需要知道包含对象。
我还尝试将其转换DbContext
为ObjectContext
以获取实体的所有相关项目。但我看不出有办法得到 a 的实际对象RelatedEnd
。
有没有办法跟踪包含的集合的变化?
更新
根据要求,我已经有一些代码:
//In a DbContext subclass
public override int SaveChanges()
{
//get all modified entities
var changes = this.ChangeTracker.Entries();
foreach (var c in changes)
{
//check the state of the entity
switch (c.State)
{
//send according WCF callback to the clients
case System.Data.EntityState.Added:
App.Current.ServerManager.SendEvent(s => s.EntityAdded((IIdentifiable)c.Entity), causedBy);
break;
...
}
}
return base.SaveChanges();
}
使用此代码,我无法检测到Items
集合的更改。