保存多对多的关系 - EF

时间:2011-01-13 11:43:47

标签: .net entity-framework

我有3个表:用户,课程,用户课程

如何使用Entity Framework在桌面UserCourse上保存用户的不同课程?

由于

2 个答案:

答案 0 :(得分:0)

通常,实体框架会将您的链接表转换为直接关系。也就是说,您将能够这样做:

someUser.Courses.Add(someCourse);
someUser.Courses.Remove(someOtherCourse);

someCourse.Users.Add(someOtherUser);

至少如果您的UserCourse表的设置方式使EF能够这样做。 (即只有两列,UserCourse的两个键设为PK)

答案 1 :(得分:0)

UserCourse表应该是EF的联结表,以了解多对多关系。 例如:UserId(PK),CourseId(PK)

之后,您只需将实体添加到实体集合即可。

var context = new MyModel();
var user1 = new User { Name = "u1" };
var user2 = new User { Name = "u1" };
context.Users.Add(user1);
context.Users.Add(user2);
var math = new Course { Name = "Math" };
context.Courses.Add(math);
math.Users.Add(user1);
math.Users.Add(user2);
context.SaveChanges();

向用户添加课程的相同逻辑:user1.Courses.Add(math);