对于我所有的 POCO,导航和集合属性都为空。
让我提供一些背景。我有一个使用 EF 4.3.1 的复杂代码优先项目。代理生成已禁用。收集和导航属性是手动管理的。
我现在启用代理创建和延迟加载。调试时,我可以看到我的实体(转换为我已知的 POCO 类型)现在实际上是一个自动生成的代理类。到现在为止还挺好。
现在,当我查看导航属性时,它们为空。同样,我的集合属性为空。
使用反射,我可以看到代理类已经覆盖了我的导航和集合属性。
所有导航和集合属性都是虚拟的。例如:
public virtual NavigationType NavigationName { get; set; }
public virtual ICollection<CollectionType> CollectionName { get; set; }
此外,所有表都这样初始化:
modelBuilder.Entity<TEntity>()
.Map(m =>
{
m.MapInheritedProperties();
m.ToTable("TableName");
});
我还可以确认数据库按预期生成。外键都存在并与预期字段相关联。
为什么它们是空的?我该如何进一步诊断?