我刚从EF密码开始。我对此有个疑问。通过Fluent API定义关系的优点是什么?
当我从我的poco(或实体)创建数据库时,我已经在表之间建立了一对多和/或多到多的关系。
前任:
public class School
{
public School()
{
Students = new List<Student>();
}
public Guid Id { get; set; }
public string Name { get; set; }
public List<Student> Student{ get; set; }
}
public class Student
{
public Guid Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public Guid SchoolId{ get; set; }
public School School{ get; set; }
}
这已经在学生和学校之间建立了一种关系。通过Fluent API定义关系会带来好处吗?还是不想?
提前感谢!
发布于 2014-05-05 13:15:01
使用Fluent API的最大优点是当您需要自定义某些内容时。在你的例子中,学校和学生之间有一对多的关系。您的导航属性描述这种关系的确切原因是,您在学校班级上有一个列表,而在该学生上有一个School属性。
Fluent API真正有用的地方是,如果出于某种原因,您希望保持这种关系,但出于某些原因,您不希望为学校的学生提供导航属性:
public class School
{
public School()
{
Students = new List<Student>();
}
public Guid Id { get; set; }
public string Name { get; set; }
// remove List<Student>
}
您仍然可以使用Fluent API描述这种关系:
modelBuilder.Entity<Student>()
.HasRequired(req => req.School)
.WithMany() // no navigation property
.HasForeignKey(fk => fk.SchoolId);
在不希望映射模型本身中的外键的场景中,它也很有用。如果您希望能够覆盖实体框架的某些约定,有时Fluent API是唯一这样做的方法。
https://stackoverflow.com/questions/23472952
复制相似问题