別のクラスのオブジェクトを含むクラスがあります。
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
コレクションの変更を検出できません。