2

Я учусь, как использовать свободно API здесь:Fluent API HasXXX против методов WithXXX

http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx

Это говорит следующие 1-Многие отношения одно и то же:

modelBuilder.Entity<Student>() 
    .HasRequired<Standard>(s => s.Standard) 
    .WithMany(std => std.Students) 
    .HasForeignKey(std => std.StdId); 

и

modelBuilder.Entity<Standard>() 
    .HasMany<Student>(std => std.Students) 
    .WithRequired(s => s.Standard) 
    .HasForeignKey(s => s.StdId); 

От intellisense я заметил, что методы HasXXX возвращают цель pe и WithXXX возвращают родительский тип.

Так что я не понимаю, как первый подход действителен, так как HasForeignKey применяется к стандарту, а не к студенту?

Иностранный ключ должен быть на Студенческом, а не стандартном.

Пожалуйста, просветите меня.

ответ

1
  1. для первого modelBuilder.Entity<Student>().HasRequired<Standard>(s => s.Standard) определяет, что студент организация требует NotNull стандартной навигации собственности и вернуть Standard сущности. Затем вы используете .WithMany(s => s.Students), который указывает, что другая сторона Студента (означает стандартную сущность) может включать в себя множество Students в качестве свойства для учащихся.
  2. Для второго, его прямой. modelBuilder.Entity<Standard>() возвращает объект Standard, который может включать в себя множество объектов Students. Поэтому вы должны использовать .HasMany<Student>(std => std.Students). Это вернет Student сущность, и вы должны определить ограничения для этого с помощью .HasMany<Student>(std => std.Students)
+0

Спасибо, но то, что я хотел бы знать, в первую HasForeignKey (станд => std.StdId) применяется к стандарту и не студент. Внешний ключ должен быть на Студенте, а не на стандартном. – superfly71

 Смежные вопросы

  • Нет связанных вопросов^_^