Я имею Person
и Course
юридических лиц с несколькими отношениями:Настройка нескольких отношений между сущностями
public class Course
{
public int CourseID { get; set; }
public virtual Person Leader { get; set; }
public virtual ICollection<Person> Teachers { get; set; }
public virtual Person CreatedBy { get; set; }
public virtual Person UpdatedBy { get; set; }
...
}
public class Person
{
public int PersonID { get; set; }
public virtual ICollection<Course> CoursesCreated { get; set; }
public virtual ICollection<Course> CoursesUpdated { get; set; }
public virtual ICollection<Course> CoursesLead { get; set; }
public virtual ICollection<Course> CoursesTutored { get; set; }
...
}
У меня есть следующее отображение:
modelBuilder.Entity<Course>().HasMany(x => x.Tutors)
.WithMany(p => p.CoursesTutored)
.Map(x =>
{
x.MapLeftKey("PersonID");
x.MapRightKey("CourseID");
x.ToTable("Course_Tutors");
});
Это работает в том, что он устанавливает Course_Tutors
таблицу, а также как предоставление таблицы курса Leader_PersonID
, CreatedBy_PersonID
и UpdatedBy_PersonID
.
Однако она также создает три дополнительных Person
столбцов в таблице курса: Person_PersonID1
, Person_PersonID2
, Person_PersonID3
.
Может ли кто-нибудь сказать мне, как избавиться от них? Я предполагаю, что мое отображение требует некоторой дополнительной работы.
Я думал, что будет делать эту работу, но его дает мне следующее сообщение об ошибке: Тип Course_UpdatedBy не определен в пространстве имен StudentProject.EFRepository (Alias = Я) – James
@james ли вы включить все эти отображения правильно? Используете ли вы ранее созданную структуру базы данных с новыми сопоставлениями? есть ли другие свойства, которые вы не отображали? – Eranga
Теперь я получаю «циклическую ссылку, которая не разрешена». [Constraint name = Course_Tutors_Target] ». Так близко к фиксации этого! – James