이 잘 작동 시나리오 하나입니다 :"참조 관계로 인해 순환 참조가 허용되지 않습니다."
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에 시도하는 것이 가능은? Visual Studio 2010과 함께 5로 업그레이드 할 수없는 것 같습니다 – sports
더 이상 VS2010이 없습니다. VS 버전은 중요하지 않습니다 - 당신은'Update-Package EntityFramework'를 nuget 패키지 관리자 콘솔에서 시도 했습니까? – Richard