簡體   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