我正在研究如何从这里使用 Fluent API:
http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx
它表示以下 1-Many 关系是同一件事:
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);
从智能感知中,我注意到 HasXXX 方法返回目标类型,而 WithXXX 方法返回父类型。
所以我不明白第一种方法是如何有效的,因为 HasForeignKey 应用于标准而不是学生?
外键应该在 Student 而不是 Standard。
请赐教。
- 对于第一个
modelBuilder.Entity<Student>().HasRequired<Standard>(s => s.Standard)
指定 Student 实体需要 NotNull 标准导航属性并返回 Standard
实体。然后你使用 .WithMany(s => s.Students)
它指定 Student 的另一端(表示 Standard entity )可以包含许多 Students
在学生收藏品中。
- 对于第二个,它很简单。
modelBuilder.Entity<Standard>()
返回 Standard
可以包括很多的实体Students
在学生集合属性中。所以你必须使用 .HasMany<Student>(std => std.Students)
.这将返回 Student 实体,您必须使用 .HasMany<Student>(std => std.Students)
为其定义约束
我是一名优秀的程序员,十分优秀!