2016-09-24 83 views
2

我是Fluent API的新手。在我的情況下,Student可以在一個GradeGrade可以有許多Students。然後,這兩個語句完成同樣的事情:我是否需要使用Fluent API配置與Entity Framework的關係的雙方?

modelBuilder 
.Entity<Student>() 
.HasRequired<Grade>(s => s.Grade) 
.WithMany(s => s.Students); 

和:

modelBuilder 
.Entity<Grade>() 
.HasMany<Student>(s => s.Students) 
.WithRequired(s => s.Grade); 

我的問題是 - 我應該怎麼選擇一個語句比其他?還是我需要這兩個陳述?

回答

2

對於雙向關係像你時(即兩端具有導航性能),它其實並不重要,你可以使用一個或另一個(你也可以同時使用,但它不建議,因爲這是多餘的,可能導致兩者不同步)。

當你有單向關係時它確實很重要,因爲只有With方法具有無參數重載。

想象一下,您沒有Grade.Students屬性。然後,你可以只使用:

modelBuilder.Entity<Student>() 
    .HasRequired(s => s.Grade) 
    .WithMany(); 

,如果你沒有Student.Grade財產,那麼你只能使用:

modelBuilder.Entity<Grade>() 
    .HasMany(s => s.Students) 
    .WithRequired(); 
1

您只需要一個。這對於1 : M的關係已經足夠了。

modelBuilder.Entity<Student>() 
      .HasRequired<Grade>(s => s.Grade) //Student entity requires Grade 
      .WithMany(s => s.Students); //Grade entity includes many Students entities 
相關問題