EF Fluent API映射0.1到0.1的关系



大家好,我有一个关于EF Fluent API(代码优先:p)的问题。在我的模型中,我有

public class TABLE_A
{
   public virtual long Id {get; set;}
   .... 
   public virtual TABLE_B MyTableBRef {get; set;}
}

public class TABLE_B
{
   public virtual long Id {get; set;}
   .... 
   public virtual TABLE_A MyTableARef {get; set;}
}

我应该如何将0..1映射到0..1关系?

在TABLE_B上的数据库中,我有一列(FK)引用TABLE_a的PK。

如果使用的列不是TABLE_B的PK,则不可能在两侧都具有导航属性。

public class TABLE_A
{
   public virtual long Id {get; set;}
}

public class TABLE_B
{
   public virtual long Id {get; set;}
   .... 
   public virutal TABLE_A MyTableARef {get; set;}
}
public class MyContext : DbContext
{
    public DbSet<TABLE_A> As { get; set; }
    public DbSet<TABLE_B> Bs { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TABLE_B>()
           .HasRequired(b => b.MyTableARef)
           .WithMany()
           .Map(b => b.MapKey("FK_Column_name));
    }
}

如果TABLE_B的PK也是TABLE_A的FK,则可以使用两侧都具有导航属性的共享PK映射。

编辑:

您可以使用共享PK映射,如下

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<TABLE_B>()
       .HasRequired(b => b.MyTableARef)
       .WithOptional(a => a.MyTableBRef);
}

TABLE_BId也是TABLE_A的FK。

相关内容

  • 没有找到相关文章

最新更新