繁体   English   中英

实体框架代码第一个多对多保存问题

[英]Entity framework code first many-to-many saving issue

可以,然后呢。 我有这个。 2节课。 两者都有彼此的列表,如下所示:

    public class Bestelling
    {
      public virtual ICollection<Gerecht> Gerechten { get; set; }
    }
    public class Gerecht
    {
    public virtual ICollection<Bestelling> Bestellingen { get; set; }
    }

为了简单起见,我删除了其余的杂物

现在,在我的代码中,那些“ gerechten”(对荷兰语:D很抱歉)被添加到特定的“ bestelling”中。 但是,具有相同ID且在列表中两次(或多次)的“ gerechten”不会被保存,只能保存一次。

在Code First中的多对多关系中,将在两个单独的对象之间使用复合键。 因此,在中间表中(由于要使用对象模型来访问信息,因此不一定显示给您),您可以根据需要组合任意数量的Gerecht和Bestellingen- 只要将两项组合即可是唯一的 (请考虑使用组合键)。 如果尝试在Gerecht和Bestellingen之间创建其他关系,则只有在存在另一个唯一标识符的情况下,才能这样做。 在这种情况下,您应该创建一个附加对象以及适当的组合键。

示例(对不起,不熟悉荷兰语,因此我将使用一个英语示例):

public class Person
{
  public int PersonID { get; set; }

  public virtual ICollection<PersonCourse> PersonCourses { get; set; }
}

public class Course
{
  public int CourseID { get; set; }

  public virtual ICollection<PersonCourse> PersonCourses { get; set; }
}

public class PersonCourse
{
  [Key, Column(Order = 0)]
  public int PersonID { get; set; }
  [Key, Column(Order = 1)]
  public int CourseID { get; set; }
  [Key, Column(Order = 2)]
  public int AnotherUniqueParameter { get; set; }

  // Navigation Properties
  public virtual Person { get; set; }
  public virtual Course { get; set; }
}

只要PersonCourse中三列的组合是唯一的,您就可以在所需的Person和Course之间添加尽可能多的关系。 当然,仅在这种情况下才需要使用此中间表。 否则,您已经做的是正确的(至少根据您的问题,我可以说)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM