MVC3实体框架多对多附加列

时间:2011-07-07 11:09:56

标签: c# asp.net-mvc-3 entity-framework-4 many-to-many ef-code-first

我是asp.net,mvc3和实体框架的新手。 我正在尝试使用实体框架和代码优先开发mvc3程序。 所以我有两个有多对多关系的课程。

一个名为“用户”的班级,另一个名为“课程”。

 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 个答案:

答案 0 :(得分:1)

没有更简单的方法可以做到这一点。将任何其他字段添加到联结表后,必须将其映射为实体以允许您访问该字段。它不再是纯粹的多对多关系。它是模型中的一个新实体,具有两个一对多的关系。