首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在代码第一流利API中定义关系的优势?

在代码第一流利API中定义关系的优势?
EN

Stack Overflow用户
提问于 2014-05-05 12:51:48
回答 1查看 513关注 0票数 2

我刚从EF密码开始。我对此有个疑问。通过Fluent API定义关系的优点是什么?

当我从我的poco(或实体)创建数据库时,我已经在表之间建立了一对多和/或多到多的关系。

前任:

代码语言:javascript
运行
复制
    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定义关系会带来好处吗?还是不想?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 13:15:01

使用Fluent API的最大优点是当您需要自定义某些内容时。在你的例子中,学校和学生之间有一对多的关系。您的导航属性描述这种关系的确切原因是,您在学校班级上有一个列表,而在该学生上有一个School属性。

Fluent API真正有用的地方是,如果出于某种原因,您希望保持这种关系,但出于某些原因,您不希望为学校的学生提供导航属性:

代码语言:javascript
运行
复制
public class School
{
    public School()
    {
        Students = new List<Student>();
    }

    public Guid Id { get; set; }
    public string Name { get; set; }
    // remove List<Student>
}

您仍然可以使用Fluent API描述这种关系:

代码语言:javascript
运行
复制
modelBuilder.Entity<Student>()
    .HasRequired(req => req.School)
    .WithMany() // no navigation property
    .HasForeignKey(fk => fk.SchoolId);

在不希望映射模型本身中的外键的场景中,它也很有用。如果您希望能够覆盖实体框架的某些约定,有时Fluent API是唯一这样做的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23472952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档