3

別のクラスのオブジェクトを含むクラスがあります。

public class Container
{
    public BindingList<Item> Items { get; set; }
}
public class Item
{
    ...
}

のオブジェクトはにContainer添付されDbContextます。DbContext's SaveChanges()をオーバーライドして、WCFサービスを介してすべての変更を送信したいと思います。

プリミティブ属性は問題ありません。それらはに反映されますEntriesItemただし、との関係がContainer変更された場合(たとえば、新しいアイテムが追加されたり、既存のアイテムが削除されたりした場合)、ChangeTrackerにはそれに関するエントリはありません。

Itemクラスにを追加してエントリForeignKeyを強制することもできModifiedますが、含まれているオブジェクトを知る必要があるため、これはあまり役に立ちません。

また、をに変換して、エンティティのすべての関連アイテムを取得しようとしましDbContextObjectContext。しかし、の実際のオブジェクトを取得する方法がわかりません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 に答える