2

大家好,我有一个关于 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。

4

1 回答 1

0

如果您使用的列不是TABLE_B.

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));
    }
}

如果 PKTABLE_B也是一个 FK,TABLE_A那么您可以使用共享的 PK 映射和双方的导航属性。

编辑:

您可以按如下方式使用共享 PK 映射

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

IdofTABLE_B也是 的FK TABLE_A

于 2012-09-08T02:29:44.713 回答