2

こんにちは皆さん、EF Fluent API (Code First :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 のデータベースには、TABLE_A の PK を参照する列 (FK) があります。

4

1 に答える 1

0

の PK 以外の列を使用している場合、両側にナビゲーション プロパティを設定することはできません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));
    }
}

の PK がTABLE_BFK でもある場合はTABLE_A、両側でナビゲーション プロパティを使用して共有 PK マッピングを使用できます。

編集:

次のように共有 PK マッピングを使用できます。

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

Idofは へのTABLE_BFK でもありTABLE_Aます。

于 2012-09-08T02:29:44.713 に答える