Я использую 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
Пункта имеет один внешний ключ свойства и RelationshipManager создает оборванный ключ для него. Ничего страшного.
Не должен ObjectContext-запрос для ключей зависимых объектов элемента, который имеет отношение «Один-ко многим?».
Это определенно то, что DbContext.Entry()
делает за кулисами, но я, хотя это alredy реализовано ObjectContext.