- به ازای هر سر رابطهی چند به چند، باید یک ICollection در دو طرف وجود داشته باشد (ICollection حالت پیشفرض EF است و نه IList). در حالت شما، 2 مورد در کلاس شخص و دو مورد در کلاس مرکز. در غیر اینصورت رابطهها یک به چند تفسیر میشوند. به علاوه در این حالت مشخص نیست که هر خاصیت به کدام خاصیت باید متصل شود چون InverseProperty ذکر نشدهاست.
- زمانیکه بیش از یک ستون یک جدول قرار است با یک جدول خاص دیگر رابطهی چند به چند داشته باشند، نیاز به چندین جدول واسط خواهد بود
که باید به صورت صریح مشخص شوند:
modelBuilder.Entity<Person>()
.HasMany(u => u.PreferedCenters)
.WithMany(t => t.Persons)
.Map(x =>
{
x.MapLeftKey("PersonId");
x.MapRightKey("CenterId");
x.ToTable("Center_Persons1"); // جدول واسط یک
});
modelBuilder.Entity<Person>()
.HasMany(u => u.ActiveCenters)
.WithMany(t => t.Persons)
.Map(x =>
{
x.MapLeftKey("PersonId");
x.MapRightKey("CenterId");
x.ToTable("Center_Persons2"); // جدول واسط دو
});