我首先使用实体框架代码在我的项目中创建数据库。我在以下两个表之间定义了多对多的关系。:
流利的Api
modelBuilder.Entity<Student>().HasMany(e => e.Courses)
.WithMany(e => e.Students).Map(m =>
{
m.MapLeftKey("StudentId");
m.MapRightKey("CourseId");
m.ToTable("StudentCourse");
});
这将在学生和课程之间定义多对多关系,并将创建一个新表 StudentCourse 在数据库中。
现在我想在
之间定义一个新关系(可能是 1对1 或 1对多)我如何首先使用实体框架代码?
答案 0 :(得分:0)
如果没有为StudentCourse创建自己的课程(poco),你想要什么是不可能的
public class StudentCourse
{
public int Id {get;set;}
public Student Student {get; set;}
public Course Course {get; set;}
}
然后使用流畅的api来建立这三个变量之间的关系
modelBuilder.Entity<StudentCourse>()
.HasRequired(i => i.Student)
.WithMany(u => u.StudentCourses)
.HasForeignKey(i => i.StudentId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<StudentCourse>()
.HasRequired(i =>i.Course)
.WithMany(d =>d.StudentCourses)
.HasForeignKey(i => i.CourseId)
.WillCascadeOnDelete(false);
StudentCourses是学生班级和课程班级中的导航属性
您可以使用定义为主键的Id或使用两个表的外键作为主键:
modelBuilder.Entity<StudentCourse>()
.HasKey(i => new {i.StudentId,i.CourseId });
在我看来,使用Id作为主键可以让您更轻松地在StudentCourse和另一个表之间建立关系。