首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >实体框架代码优先- Fluent Api与数据注释的优缺点

实体框架代码优先- Fluent Api与数据注释的优缺点
EN

Stack Overflow用户
提问于 2011-03-18 16:22:20
回答 1查看 40.3K关注 0票数 129

当使用实体框架创建数据库时,代码优先,很多数据库模型都可以从代码中提取出来。Fluent API和/或属性可用于对模型进行微调。

与数据注释相比,Fluent Api的优势和劣势是什么?换句话说:即使在某些情况下两种方法都可以使用,在什么情况下其中一种方法应该优于另一种方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-18 18:20:49

使用DataAnnotations可以配置的所有内容,也可以使用Fluent API进行配置。反之亦然。因此,从配置选项和灵活性的角度来看,Fluent API是“更好的”。

配置示例(当然不是完整的列表),在Fluent API中是可能的,但在DataAnnotations中是不可能的(据我所见):

  • 关闭级联删除:

当键未在对象模型中公开时,数据库中的.WillCascadeOnDelete(false)

  • Specify外键列名称:

.Map(conf => conf.MapKey("MyForeignKeyID"))

  • Fine对关系的细粒度调整,特别是在对象模型中只公开关联的一侧的所有情况下:

对象模型和数据库表之间继承映射的WithRequiredPrincipal(...)

  • Specification、.WithMany(...)WithOptional(...)WithRequiredDependent(...) (每个层次结构的表、每个类型的表、每个具体类的表):

.Map<TDerived>(Action<EntityMappingConfiguration<TDerived>> ...)

编辑:微软认为Fluent API是一个“高级功能”(引用自here):

,fluent API被认为是一个更高级的特性,我们建议您使用数据注释,除非您的需求要求您使用fluent API。

但在我看来,您很快就会达到DataAnnotations的局限性(可能除了极其简单的对象模型之外)。如果您不能再使用DataAnnotations对模型进行微调,那么最后的办法就是遵循默认的映射约定(根据这些规则命名属性)。目前您不能覆盖这些约定(仅禁用它们;微软宣布在未来的EF版本中提供这些约定的配置选项)。但是,如果您不想在定义对象模型时受到映射约定的限制,那么您唯一的选择就是Fluent API。

学习Fluent API几乎是必须的,对于简单的应用程序来说,DataAnnotations是一个很好的选择。

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

https://stackoverflow.com/questions/5354900

复制
相关文章
Entity Framework Fluent API
使用DataAnnotation非常简单,但对于EntityFramework中的特性,就要在实体类中引入EntityFramework程序集,但实体类最好能是保持与架构无关性的POCO类,才能更具通用性。所以,最好是在数据层中使用FluentAPI在数据层中进行实体类与数据库之间的映射工作。从功能上而言Data Annotations是Fluent API的一个子集, Data Annotations可以实现的功能Fluent API都能实现。
aehyok
2018/09/11
8620
Vue-框架模板的源代码注释
请稍等。。吃完饭回来写 吃饭回来了~嘿 ————————————————正经分割线————————————————— 先看我的目录结构:这是配置好node环境和配置好webpack后,生成的原始框架。
xing.org1^
2018/05/17
1.7K0
Spring Boot 特性之 Fluent Builder API
Spring Boot 提供了一个流式调用的构建器 API,用来创建 SpringApplication 实例、提供 ConfigurableApplicationContext 上下文支持。
FoamValue
2020/08/31
1.4K0
看,Mockito如何搞定Builder模式的Fluent API
建造者模式Builder是一种常用的设计模式,用于构建不同的产品类。 如有以下的Builder
Antony
2020/12/02
1.1K0
看,Mockito如何搞定Builder模式的Fluent API
Newbe.Mahua 1.8 消息发送Fluent API
现在:通过定义IText/IImage/IAt等一系列特殊消息接口,很好的解决的这个问题。
newbe36524
2020/03/16
4370
matlab代码折叠与分节注释
matlab代码折叠与分节注释 觉得有用的话,欢迎一起讨论相互学习~ 通常函数或者循环过多,我们需要将代码折叠起来,matlab设置窗口如下图所示。 之后就能在左侧看见折叠的箭头了 但是,有时候想将
演化计算与人工智能
2020/08/14
1.8K0
matlab代码折叠与分节注释
【数据架构】SOGAF 通用实体框架 (CoE)
Salesforce 运营、治理和架构框架 (SOGAF) 将 MIT-CISR 企业架构框架应用于 Salesforce 实施和程序。 介绍 为共同实体(即卓越中心)制定一个明确的定义是很棘手的。转换程序中的通用实体 (CoE) 有多种名称: “卓越中心”、“C4E”、“专业中心”、“专家网络” 术语“设计授权”或“平台授权”也用于通用实体,这会造成一些混淆 不同的描述会导致不同的期望——当没有得到满足时会感到沮丧 此类问题在难以确定是转型、能力还是最佳实践中心的实体中很常见 共同实体也可以扮演任意数
架构师研究会
2022/04/19
1.4K0
【数据架构】SOGAF 通用实体框架 (CoE)
从API迭代中解放!GraphQL的优缺点与团队价值
facebook推出的GraphQL,是一个特点非常鲜明的API查询语言。与SQL类似,GraphQL是一套规范,具体实现有很多框架。对前端而言,可以想使用SQL一样(比SQL简单且安全)可以直接获取自己所需要的数据,对于后端而言,节省了接口升级的开发成本,非常适用于快速迭代,或者多页面接口的业务。
味笼
2023/02/19
3.5K0
从API迭代中解放!GraphQL的优缺点与团队价值
数据结构(九):广度优先与深度优先
广度优先搜索(breadth-first search)和深度优先搜索(depth-first search)是两种探索图/树中顶点的思路。这两种搜索方式可以用来查找图中某个指定的顶点,也可以用来对图中顶点进行遍历。
zhipingChen
2018/11/29
9570
数据结构(九):广度优先与深度优先
Flutter框架优缺点
1、Flutter优点 A、混合开发中,最接近原生开发的框架; B、性能强大,流畅; C、优秀的路由设计; D、优秀的动画设计; E、简单易学,Dart语言更具优势; F、跨多种平台,减少开发成本;支持插件,可以访问原生系统的调用。
江一铭
2022/06/16
1.2K0
PHP数据结构-图的遍历:深度优先与广度优先
在上一篇文章中,我们学习完了图的相关的存储结构,也就是 邻接矩阵 和 邻接表 。它们分别就代表了最典型的 顺序存储 和 链式存储 两种类型。既然数据结构有了,那么我们接下来当然就是学习对这些数据结构的操作啦,也就是算法的部分。不管是图还是树,遍历都是很重要的部分,今天我们就先来学习最基础的两种图的遍历方式。
硬核项目经理
2021/06/10
6460
PHP数据结构-图的遍历:深度优先与广度优先
【自然框架】之 “表单控件”与“实体类”
      对于简单的添加、修改,也就是没有什么业务逻辑的那种,表单控件的工作步骤是这样的,以添加数据为例。这个不用写什么代码,点点鼠标就可以搞定了。       但是对于复杂的业务逻辑的需求,就不能
用户1174620
2018/02/26
8670
【自然框架】之 “表单控件”与“实体类”
为什么要 API 优先?
最近关于 API-First (API 优先)作为设计和开发方法的讨论很多,虽然通向 API-First 的途径有很多,但通常推动 API-First 的一般都是 API 架构师、API 设计师和 API 平台负责人等,很好理解,因为他们对组织中 API 的效率、互操作性和质量最感兴趣。
API 小达人
2023/08/07
2760
Rafy 框架 - 为数据库生成注释
当开发者使用 CodeFirst 开发模式,编写了大量的实体类,在代码中编写了完整的类型注释和属性注释,并自动生成数据库后,往往需要把实体类型和实体属性上的注释同时生成到对应的数据库表及字段上。这样,即方便在查看数据库时能清晰地看到每一个表及字段的含义,也方便使用一些第三方的工具(如 PowerDesigner 等)为数据库生成较为全面的文档。 使用方法 在为数据库生成注释之前,需要保证数据库已经全部生成成功(即和实体保持一致)。否则更新字段的注释时,可能因为字段不存在而导致执行失败。 需要在编译领域实
用户1172223
2018/01/29
5620
API数据加密框架monkey-api-encrypt
主要是在Spring Boot中如何对接口的数据进行自动加解密操作,通过注解的方式来指定是否需要加解密。
猿天地
2019/03/07
8500
iframe框架及优缺点
HTML5不再支持使用frame,关于frame与iframe的区别,可以参阅 iframe与frame的区别
WindRunnerMax
2020/08/27
3.3K0
mpvue小程序框架的优缺点
从最开始学习小程序到开发,也有小半年了吧,从wepy到mpvue,都踩过很多坑,也发过三篇文章了,今天来说说mpvue的坑在哪儿,希望你接下来的路好走。下面是之前的文章: mpvue小程序架构搭建详细介绍 mpvue小程序单个页面添加config配置[设置标题、下拉刷新、颜色等] 亲身体验小程序wepy和mpvue框架的区别
Javanx
2019/09/04
1.6K0
mpvue小程序框架的优缺点
T4模板生成代码。 数据实体层与数据仓储层。备注
文件下载连接 http://download.csdn.net/download/drawdream/9916255
蓝夏
2022/05/10
6260
代码注释的艺术,优秀代码真的不需要注释吗?
前天回家路上,有辆车强行插到前面的空位,司机大哥暴躁地拍着方向盘吐槽道“加塞最可恶了”,我问“还有更可恶的吗”,司机大哥淡定说道“不让自己加塞的”。似乎和我们很类似,我们程序员届也有这 2 件相辅相成的事:最讨厌别人不写注释,更讨厌让自己写注释。
从大数据到人工智能
2022/09/08
5680
点击加载更多

相似问题

与实体框架的代码优先关系,fluent API

14

实体框架-代码优先Fluent API: ErrorMessage?

14

使用fluent API to string的实体框架代码优先关系

10

实体框架-代码优先/ Fluent API -过滤的导航属性

11

结合fluent api配置的实体框架代码优先属性

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文