【发布时间】:2014-11-19 22:02:21
【问题描述】:
我如何获得以下关系以仅在Entity2中生成FK?
public class Entity1
{
public int Id { get; set; }
public virtual Entity2 Entity2 { get; set; }
}
public class Entity2
{
public int Id { get; set; }
public int? Entity1Id { get; set; }
public virtual Entity1 Entity1 { get; set; }
}
我希望 Entity1 能够获得对 Entity2 的引用(让 EF 延迟加载它),但我不希望 Entity1 在数据库中对 Entity2 有一个 FK,我只希望 Entity2 对 Entity1 有一个 FK .这可能吗?在我的数据库上下文中,我在 OnModelCreating 中尝试的一切都没有让我得到我真正想要的东西。
我能得到的最接近的是:
modelBuilder.Entity<Entity2>().HasOptional(e => e.Entity1).WithOptionalDependent(e => e.Entity2);
但是,这将创建具有 Entity1Id 列和 Entity1_Id FK 列到 Entity1 的 Entity2 表,而不是只创建应该是 Entity1 的 FK 的单个 Entity1Id 列。
另外,如果有人问起,Entity1Id 属性是有意为 null 的 int,因为 Entity2 实例/表记录需要独立存在而没有到 Entity1 的链接。
【问题讨论】:
-
如果是一对多而不是一对一的关系,为什么你能做到这一点?
标签: c# entity-framework ef-code-first one-to-one