簡體   English   中英

實體框架6.1.2多對多

[英]Entity Framework 6.1.2 Many to Many

我在使用實體框架6.1.2時遇到麻煩。 我敢肯定這會被覆蓋過,但是我在任何地方都找不到。 構建數據庫實體框架時,不會為我擁有的兩個列表項創建關系,因為我在上面將它們聲明為單個實體。

有什么解決辦法嗎?

public class SomeClass
{
    public TeamMember LeadPartner { get; set; }
    public Team Team { get; set; }
    public List<TeamMember> OtherTeamMembers { get; set; }
    public List<Team> OtherTeams { get; set; }
}

抱歉,在我真的找不到任何東西之前是否有人問過這個問題。

其他類很可能存在歧義。 例如,如果您在Team定義了List<SomeClass> ,則EF無法確定此屬性是與public Team Team (這將創建一對多關系)還是與public List<Team> OtherTeams (創建一個多對多關系)。 兩者均有效。

若要解決歧義,請在其他類的List<SomeClass>中添加[InverseProperty("OtherTeams")]批注。

同樣,最佳實踐是將屬性公開為ICollection<T>而不是List<T> ,以創建new List<T>或構造函數中的任何內容。 這允許您稍后更改實現,例如,改用HashSet<T>

在您的DbContext.OnModelCreating覆蓋中添加映射,類似於以下內容:

modelBuilder.Entity<SomeClass>()
            .HasMany<TeamMember>(sc => sc.OtherTeamMembers)
            .HasMany();
         // .HasMany(tm => tm.SomeClassNavigationPropertyList);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM