如何获得以下关系才能在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在db中有一个FK到Entity2,我只是希望Entity2有一个FK到Entity1。这可能吗?我在我的数据库环境中尝试OnModelCreating的所有东西都没有得到我真正想要的东西。
我能得到的最接近的是:
modelBuilder.Entity<Entity2>().HasOptional(e => e.Entity1).WithOptionalDependent(e => e.Entity2);
但是,这将创建具有Entity1Id列的Entity2表和Entity1的Entity1_Id FK列,而不是仅创建应该是FK到Entity1的单个Entity1Id列。
此外,如果有人问,Entity1Id属性是故意为可空的int,因为Entity2实例/表记录需要独立存在而没有到Entity1的链接。
答案 0 :(得分:0)
删除OnModelCreating中的代码,并将此批注添加到Entity2
public class Entity2
{
public int Id { get; set; }
[ForeignKey("Entity1")]
public int? Entity1Id { get; set; }
public virtual Entity1 Entity1 { get; set; }
}
或者你可以尝试这个(我不知道它是否有效)
modelBuilder.Entity<Entity2>()
.HasOptional(e => e.Entity1)
.WithOptionalDependent(e => e.Entity2)
.Map(m => { m.MapKey("Entity1Id"); });