我使用 DbContext。
查看这两种代码变体:
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
在第二种情况下 - 5
Item 有一个外键属性,RelationshipManager 为其创建悬空键。没关系。
ObjectContext 不应该查询具有“一对多”关系的项目的依赖实体的键吗?
这绝对是DbContext.Entry()
幕后所做的,但我虽然这已经由 ObjectContext 实现。