【发布时间】:2012-05-09 07:49:26
【问题描述】:
我无法找到专门解决此问题的其他人,所以就这样吧。
我有一个简单的模型,其中一个实体简单地将另一个实体引用为父子关系或一对多关系,定义如下:
public class Parent
{
public int ID { get; private set; }
public string Name { get; private set; }
}
public class Child
{
public int ID { get; private set; }
public string Name { get; private set; }
public virtual Parent Parent { get; private set; }
}
我正在为每个创建特定的映射文件,这些文件对除相关实体之外的所有正常属性都非常有用。它总是出现空值。无论我是否在属性上有虚拟/私有访问器,它都不会加载,除非我先从上下文中单独提取父级的副本。我的映射如下所示:
HasRequired(t => t.Parent).WithMany().Map(t => t.MapKey("ParentID")).WillCascadeOnDelete();
这有什么我做错了吗?我一生都无法弄清楚这一点。就这样我涵盖了所有基础,我正在加载这样的实体:
Context.Set<Child>().FirstOrDefault(x => x.ID == 1);
最后,我有一些限制:
- 我不能将模型中的外键作为属性。
- 我不能从父母那里收集孩子。
【问题讨论】:
-
为我工作。孩子由您的查询加载,child.Parent 在第一次访问时延迟加载。
-
为什么有两个类来代表孩子和父母。因为它们具有相同的属性
-
@Jayantha 也许这只是示例代码...
标签: entity-framework mapping foreign-keys ef-code-first