3

我有一个包含另一个类的对象的类:

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输入,但这对我没有多大帮助,因为我需要知道包含对象。

我还尝试将其转换DbContextObjectContext以获取实体的所有相关项目。但我看不出有办法得到 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集合的更改。

4

1 回答 1

1

看看这个问题,它显示了如何获得添加的关系。希望它能帮助你得到你需要的东西。

于 2012-10-25T15:21:16.803 回答