[英]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.