我有一个包含另一个类的对象的类:
public class Container
{
public BindingList<Item> Items { get; set; }
}
public class Item
{
...
}
Container
的对象附加到DbContext
。我想覆盖DbContext's
SaveChanges()
以通过WCF服务发送所有更改。
原始属性没问题。它们反映在Entries
中。但是,如果Item
与其Container
之间的关系发生变化(例如添加了新项目或删除了现有项目),则ChangeTracker中没有相关条目。
我可以在Item类中添加ForeignKey
来强制Modified
条目,但这对我没什么帮助,因为我需要知道包含对象。
我还尝试将DbContext
转换为ObjectContext
以获取实体的所有相关项目。但我认为无法获得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
集合的更改。