我已经定义了两个类,它们具有一对多的外键关系,首先由Entity Framework 6.0
数据库生成。具有实体框架代理客户端的延迟加载导航属性
public class car
{
public Nullable<int> label_id { get; set; }
public virtual label label { get; set; }
}
public class label
{
public virtual ObservableCollection<car> cars { get; set; }
}
我创建了一个代理对象并将其添加到DBContext
。
car c = _context.cars.Create();
_context.cars.Add(c);
然后我设置一个外键属性,并尝试访问相应的导航属性。
c.label_id = 4;
label l = c.label;
设置外键属性label_id不加载导航属性标签。代码中的最后一行返回null
。
的类遵循这里设立 Requirements for Creating POCO Proxies 要求(调试显示了代理车对象被创建,所以我相信所有的要求都满足)。
数据库表标签持有与我没有打电话SaveChanges
或DetectChanges
这里,因为我觉得我不应该需要做这样的4
主键的项目。
此文档How to: Use Lazy Loading to Load Related Objects说“启用延迟加载后,当通过导航属性访问相关对象时,加载相关对象”。
我还没有禁用延迟加载,手头上有代理对象,但导航属性在我尝试访问它时未加载。
可能是什么原因?