2017-10-05 13 views
0

2つのテーブルの間に1対1の関係を作成する必要がありますが、一方向のみです。エンティティフレームワーク - 一方向の一対一の関係

[Accounts] 
account_id 
name 
etc... 

[SalesReps] 
sales_rep_id 
account_id 
account 
etc... 

だから、私は、SalesRepsテーブルにはアカウントとの関連を持つようにしたいが、私はアカウントがSalesRepsへの参照を持っている必要はありません。

modelBuilder.Entity<sales_rep>() 
.HasRequired(a => a.account) 
.WithMany() 
.HasForeignKey(a => a.account_id); 

しかし、それは私に与えます:

は、私はこれを試してみました

sales_rep_account_Source:多重度は関係 'sales_rep_account' にロール 'sales_rep_account_Source' で有効ではありません。依存ロールはキープロパティを参照するため、依存ロールの多重度の上限は「1」でなければなりません。

+0

あなたが持っていますSalesRepsテーブルに関連付けられているロール? – DaniDev

+0

問題のエンティティモデルの関連部分(C#コードクラス、名前だけでなくプロパティ)を提供してください。本質的に[mcve]。 –

答えて

0

これは、WithRequiredDependent()の設定で行います。あなたのエンティティは次のようになります。

public class Account 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class SalesRep 
{ 
    public int Id { get; set; } 
    public Account Account { get; set; } 
} 

あなたがこれを行う必要がありますOnModelCreating()メソッドで:

modelBuilder.Entity<Account>().HasKey(x => x.Id); 
modelBuilder.Entity<SalesRep>().HasKey(x => x.Id); 
modelBuilder.Entity<SalesRep>().HasRequired(x => x.Account).WithRequiredDependent().Map(x => x.MapKey("AccountId")); 
0

それは私がしなければならなかったすべてがあったこと、判明:

modelBuilder.Entity<sales_rep>() 
      .HasRequired(a => a.account) 
      .WithOptional(); 
関連する問題