使用Fluent API进行EF关系映射

时间:2016-10-31 20:34:51

标签: c# entity-framework ef-fluent-api

比如说我有这个简单的模型

class Student
{
    List<Course> Courses { get; set; }
}

class Course
{
    Student Student { get; set; }
}

我是否必须在两个方向上映射关系?

示例

builder
    .Set<Course>()
    .HasOne(o => o.Student)
    .WithMany(o => o.Courses)
    .HasForeightKey("StudentId");

builder
    .Set<Student>()
    .HasMany(o => o.Courses)
    .WithOne(o => o.Student)
    .HasForeignKey("StudentId");

1 个答案:

答案 0 :(得分:5)

您不需要两个Fluent Api语句。您已经在映射&#34;两个方向&#34;只有一个声明。

builder
    .Set<Course>()
    .HasOne(o => o.Student) //Course Has One Student  
    .WithMany(o => o.Courses) //Student Has Many Courses
    .HasForeightKey("StudentId"); //Course Has Foreign Key of StudentId

这是一个很好的教程entity framework tutorial示例如下:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //configure one-to-many
    modelBuilder.Entity<Standard>()
                .HasMany<Student>(s => s.Students) //Standard has many Students
                .WithRequired(s => s.Standard)  //Student require one Standard
                .HasForeignKey(s => s.StdId); //Student includes specified foreignkey property name for Standard
}
相关问题