2016-09-13 47 views
2

我正在使用實體框架6.1作爲ORM。我想配置RuleCode實體之間的一對多關係。我想用一個名爲RuleParameters的中間包裝類來做到這一點。另外,我不希望這個包裝器對象在DB中表示。如何在實體框架中配置與中間包裝類的一對多關係

EF有可能嗎?如果是這樣,我缺少哪些註釋/流暢API配置?

這是我的設置。我在這裏以流利的api顯示註釋,以便簡明扼要。

public class Rule 
{ 
    public Rule() 
    { 
     Parameters = new RuleParameters(); 
    } 

    public int RuleId { get; set; } 

    [NotMapped] 
    public RuleParameters Parameters { get; set; } 

} 

public class RuleParameters 
{ 
    public virtual IList<Code> Codes; 
} 

public Code 
{ 
    public int CodeId { get; set; } 

    public int RuleId { get; set; } 

    [ForeignKey("RuleId")] 
    public Rule Rule { get; set; } 

} 

問題我遇到:

  • RuleParameters不是一個實體,所以我當然希望把它當作一個複雜的類型,但不能因Codes協會(1/2)(2/2)
  • 從EF隱藏RuleParameters包裝,同時配置一對多關係似乎是矛盾的。
+0

@GertArnold'[NotMapped]'用於隱藏'RuleParameters'。似乎這樣做也隱藏了我想要在實體之間配置的任何種類的關係,因此矛盾:(。 – Mantzel

+0

呃,你不能隱藏'RuleParameters',你必須將它映射爲一個複雜類型,或者由流利的API或數據註釋 –

回答

0

爲什麼要使用中級課程? 建立沒有中間階層的關係。

public class Rule 
{ 
    public Rule() 
    { 
     Codes = new HashSet<Code>(); 
    } 

    public int RuleId { get; set; } 

    public ICollection<Code> Codes { get; set; } 
} 

public Code 
{ 
    public int CodeId { get; set; } 

    public int RuleId { get; set; } 

    public virtual Rule Rule { get; set; } 
} 
+0

嗨,謝謝你的迴應,我省略了我的設計討論,關注這個問題是否可以用EF解決,查詢頭腦時,底層的數據庫結構是一個主規則表Rule我希望將這10個表關係在Rule實體中進行組織分類,而不是將它們全部扁平化。例如,我期望Rule.RuleParameters具有4個導航屬性,另一個類型Rule.Filters以包含5個導航屬性IMO的包裝提供更多的上下文比重命名每個屬性RuleParameterCode或RuleFilterDate。 – Mantzel

相關問題