如何在Entity Framework中配置与中间包装类的一对多关系

时间:2016-09-13 16:46:12

标签: c# entity-framework-6 ef-fluent-api

我使用Entity Framework 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)而无法实现。
  • 隐藏RuleParameters封装器,同时配置一对多关系似乎是矛盾的。

1 个答案:

答案 0 :(得分: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; }
}