2017-10-05 45 views
0

我需要在兩個表之間建立一對一的關係,但僅限於單向關係。實體框架 - 單向一對一關係

[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_Source' 有效的關係 'sales_rep_account'。由於依賴角色是指關鍵屬性,所以依賴角色的多重性的上界必須是'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();