0
這是一個情況,工作正常:「參照關係將導致不允許的循環引用。」
public class Domain
{
public int DomainId { get; set; }
[InverseProperty("Domain")]
public virtual ICollection<Person> Persons { get; set; }
[InverseProperty("Domain")]
public virtual ICollection<Group> Groups { get; set; }
}
public class Person
{
public int PersonId { get; set; }
public virtual Domain Domain { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
public class Group
{
public int GroupId { get; set; }
public virtual Domain Domain { get; set; }
public virtual ICollection<Person> Members { get; set; }
}
這是方案二,其失敗。
public class Domain
{
// Same as scenario 1...
}
public class Person
{
public int PersonId { get; set; }
public int DomainId { get; set; } // <--- new
[ForeignKey("DomainId")] // <--- new
public virtual Domain Domain { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
public class Group
{
public int GroupId { get; set; }
public int DomainId { get; set; } // <--- new
[ForeignKey("DomainId")] // <--- new
public virtual Domain Domain { get; set; }
public virtual ICollection<Person> Members { get; set; }
}
在場景2的錯誤信息是下列內容: 的參照關係將導致不被允許週期性參考。 [約束名稱= FK_dbo.GroupMembers_dbo.Persons_MemberId]
在OnModelCreating方法中,兩種方案都有此映射(多對多)。
modelBuilder.Entity<Group>()
.HasMany(group => group.Members)
.WithMany(member => member.Groups)
.Map(m =>
{
m.ToTable("GroupMembers");
m.MapLeftKey("GroupId");
m.MapRightKey("MemberId");
});
我在做什麼錯了?我想達到的是完全合理的
哎呀我無法弄清楚發生了什麼 – sports
是否有可能爲您在EF 4.4試試?看來,我不能升級到5與Visual Studio 2010 – sports
我沒有VS2010了。 VS版本應該不重要 - 你有沒有試過Nuget包管理器控制檯中的Update-Package EntityFramework? – Richard