2015-04-28 33 views
0

我已经定义了两个类,它们具有一对多的外键关系,首先由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 要求(调试显示了代理车对象被创建,所以我相信所有的要求都满足)。

数据库表标签持有与我没有打电话SaveChangesDetectChanges这里,因为我觉得我不应该需要做这样的4

主键的项目。

此文档How to: Use Lazy Loading to Load Related Objects说“启用延迟加载后,当通过导航属性访问相关对象时,加载相关对象”。

我还没有禁用延迟加载,手头上有代理对象,但导航属性在我尝试访问它时未加载。

可能是什么原因?

回答

0

我不确定是否可以在没有先保存更改(从未尝试过或信任它)的情况下获得对象的延迟加载。但是,您是否检查了延迟加载选项是否设置为true?我敢肯定,但我首先提出简单的问题。

var lazyLoadingIsTrue = _context.ContextOptions.LazyLoadingEnabled == true;