私はDbContextを使用しています。
次の 2 つのコードのバリエーションを見てください。
var context = new MyEntities();
context.Configuration.LazyLoadingEnabled = false;
var item = context.Items.OrderBy( i => i.Id).First();
var oCtx = (context as IObjectContextAdapter).ObjectContext;
var relationshipManager = oCtxc.ObjectStateManager.GetRelationshipManager(item);
そしてこれ:
var context = new MyEntities();
context.Configuration.LazyLoadingEnabled = false;
var item = context.Items.OrderBy( i => i.Id).First();
context.Entry(item);
var oCtx = (context as IObjectContextAdapter).ObjectContext;
var relationshipManager = oCtxc.ObjectStateManager.GetRelationshipManager(item);
唯一の違いは呼び出しですcontext.Entry(item);
私は異なる結果を持っています。
最初のケースでrelationshipManager.Relationships.Count
は 1 に等しい
2 番目のケースでは - 5
Item には 1 つの外部キー プロパティがあり、RelationshipManager はそれに対してダングリング キーを作成します。それで大丈夫です。
ObjectContext は、「1 対多」の関係を持つ項目の依存エンティティのキーを照会するべきではありませんか?
それは間違いなくDbContext.Entry()
舞台裏で行われていることですが、これはすでに ObjectContext によって実装されています。