【发布时间】:2014-06-16 04:32:41
【问题描述】:
我使用一个类似这样的代码来选择一个大的对象列表,用于只读目的:
using (DBContext db = new MyContextClass())
{
... data creation ...
db.SaveChanges();
}
using (DBContext db = new MyContextClass())
{
db.Configuration.LazyLoadingEnabled = false;
db.Configuration.ProxyCreationEnabled = false;
db.Configuration.AutoDetectChangesEnabled = false;
DbQuery data = db.Set(someType)
foreach (string propertyName op in somePropertieNames)
data = data.Include(propertyName);
foreach (object item in data.AsNoTracking())
ScanNavigatorsOf(item);
}
在ScanNavigatorsOf() 中,我阅读了所有导航属性,并注意到foreach 循环产生的第一个对象具有不完整的集合和引用。在程序点击我的ScanNavigatorsOf(...) 方法时,导航属性的填充似乎还没有完成。所有其他对象都具有完整的导航属性。我正在对此进行单元测试,因此我可以确保对象很好地存储在数据库中。
如何等待已加载对象的导航集合和引用完全填充?
就像ObjectContext.ObjectMaterialized Event 中解释的那样,集合似乎没有与 main 对象同时实现,但是我如何知道该过程何时完成?
【问题讨论】:
标签: c# .net entity-framework entity-framework-6