MVC3 Entity Framework многие-ко-многим с дополнительным столбцом - PullRequest
3 голосов
/ 07 июля 2011

Я новичок в asp.net, mvc3 и сущности. Я пытаюсь разработать программу для mvc3 с помощью Entity Framework и Code-First. Итак, у меня есть два класса с отношением «многие ко многим».

Один класс называется «Пользователь», другой - «Курс».

 public class Course : IValidatableObject
 {
         [...]
         public virtual ICollection<User> Users { get; set; }
         [...]
 }

 public class User : IValidatableObject
 {
         [...]
         public virtual ICollection<Course> Courses { get; set; }
         [...]
 }

Итак, это работает. Но теперь мне нужно дополнительное поле, которое сохраняет статус регистрации на курс. Есть ли простой способ, который я не знаю?

Я пробовал это так:

 public class Course : IValidatableObject
 {
         [...]
         public virtual ICollection<CourseUser> CourseUsers { get; set; }
         [...]
 }

 public class User : IValidatableObject
 {
         [...]
         public virtual ICollection<CourseUser> CourseUsers { get; set; }
         [...]
 }

 public class CourseUser
 {
     [Key, ForeignKey("Course"), Column(Order = 0)]
     public int Course_ID { get; set; }
     [Key, ForeignKey("User"), Column(Order = 1)]
     public string User_ID { get; set; }

     public int Status { get; set; } //{ pending, approved }

     public virtual Course Course { get; set; }
     public virtual User User { get; set; }
 }

Но это значительно усложняет добавление или редактирование связанных данных. Например, мне пока не удалось автоматически добавить пользователя, создавшего курс, в таблицу CourseUsers.

1 Ответ

1 голос
/ 07 июля 2011

Нет, нет более простого способа сделать это. После того, как вы добавите любое дополнительное поле в таблицу соединений, оно должно быть сопоставлено как сущность, чтобы вы могли получить доступ к этому полю. Это уже не чистое отношение «многие ко многим». Это новая сущность в вашей модели с двумя отношениями «один ко многим».

...