私の各POCOのコンストラクターには、次のものがあります。
this.StartTracking();
POCO のいずれかのすべてのインスタンスで追跡がオンになっていることを確認します。エンティティ B の TrackableCollection を含むエンティティ A があります。エンティティ A のインスタンスを次のようにロードすると、次のようになります。
using(MyContext ctx = new MyContext())
{
entityA = ctx.EntityA.Include("EntityB").Where(x => x.Id== id).FirstOrDefault();
}
エンティティ A の ObjectsAddedToCollection プロパティを見ると、「未変更」のフラグが立てられたオブジェクトが 1 つあります。entityA.EntityB[0].MarkAsDeleted() を実行すると、状態が「削除済み」に設定されず、ObjectsRemovedFromCollection コレクションに移動されません。完全に削除されるだけです。再確認したところ、エンティティ A とエンティティ B の両方で ChangeTrackingEnabled が True に設定されています。これが機能しない理由はありますか? このため、子エンティティを削除してデータベースへの変更を永続化することはできません。