企业应用开发中.NET ORM EF 常用哪种模式?
前言
本篇文章来源于DotNetGuide技术社区微信交流小伙伴的提问:在企业应用开发中.NET ORM EF常用哪种模式进行开发?今天我们一起来了解一下 EF 开发的三种模式。
EF 介绍
Entity Framework(EF)是一种新式对象关系映射器,可用于跨各种数据库(包括 SQL 数据库(本地和 Azure)、SQLite、MySQL、PostgreSQL 和 Azure Cosmos DB,使用 .NET(C#)构建干净、可移植和高级的数据访问层。 它支持 LINQ 查询、更改跟踪、更新和架构迁移。
官方文档教程:https://docs.microsoft.com/zh-cn/ef
GitHub 地址:https://github.com/dotnet/ef6
什么是 ORM,有什么作用?
ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题,ORM 的作用是在关系型数据库和业务实体对象之间建立映射关系,这样我们在具体的操作业务对象的时候就不需要再去和复杂的 SQL 语句打交道,只需简单的操作对象的属性和方法。
.NET ORM 如何选择?
假如你到现在还不知道该选择哪种 ORM 来进行.NET 应用的开发,不妨先看看下面的这两篇文章,相信对你会有所帮助。
EF 开发的三种模式
这三种模式都是用于定义和管理数据模型的方式,但是它们的实现方式不同,适用于不同的场景。
代码优先模式(Code First)
数据库优先模式(Database First)
模型优先模式(Model First)
代码优先模式(Code First)
代码优先模式(Code First)允许开发者先定义实体类和数据库上下文类,然后通过 EF 迁移等工具自动生成数据库表结构和映射文件,确保数据库与应用程序代码保持同步。
优点
这种模式适用于开发人员更习惯于使用代码管理数据模型的场景,同时也能够更灵活地定义数据模型。
EF 提供了自动迁移功能,能够根据实体类的变化自动更新数据库结构,简化了数据库迭代开发的过程。
缺点
当数据模型发生变化时,开发人员还需要手动修改代码并执行数据迁移操作。因此,在一些情况下,代码工作可能会相对繁琐,特别是在处理复杂的数据模型或频繁变更的情况下。
学习成本需掌握迁移命令、Fluent API 配置等高级特性。
数据库优先模式(Database First)
数据库优先模式(Database First)允许开发者从现有数据库对模型实施反向工程。模型存储在 EDMX 文件(.edmx 扩展名)中,可以在实体框架设计器中查看和编辑。你在应用程序中与之交互的类是从 EDMX 文件自动生成的。
优点
通过已有的数据库结构快速生成数据模型,减少了手动编写模型类的时间和工作量,加快了开发速度。
适用于已有数据库的项目,无需从头设计数据模型,便于与现有数据库进行集成开发。
当数据库结构发生变化时,可以通过更新数据模型来保持模型与数据库的一致性,方便维护。
缺点
自动生成的模型类可能包含过多的属性和关联,导致模型类过于庞大和复杂,不利于维护和理解。
自动生成的模型类可能并不是最优化的数据访问方式,可能导致性能上的一些问题,需要额外优化。
模型优先模式(Model First)
模型优先模式(Model First)允许开发者使用实体框架设计器创建新模型,然后从该模型生成数据库架构。模型存储在 EDMX 文件(.edmx 扩展名)中,可以在实体框架设计器中查看和编辑。你在应用程序中与之交互的类是从 EDMX 文件自动生成的。
优点
使用可视化工具,开发人员可以直观地设计数据模型,通过拖放和配置属性来定义实体和关系,从而提高开发效率。
缺点
操作步骤比较繁琐,对于复杂的数据模型,使用可视化工具进行设计和管理可能会变得困难。当模型变得庞大和复杂时,可视化工具的性能和易用性可能会受到影响。
最后总结
上面我们通过对 EF 三种开发模式的简单概述,可以看出代码优先模式(Code First)和数据库优先模式(Database First)是比较适合企业应用开发的,因为这两种方式更符合我们实际开发的使用模式。那么具体用哪一种,这就需要根据你自己项目的复杂度和团队使用习惯来衡量了,假如你有不同的见解欢迎留言。
参考文章
https://learn.microsoft.com/zh-cn/ef/ef6/modeling/designer/workflows/database-first
https://learn.microsoft.com/zh-cn/ef/ef6/modeling/designer/workflows/model-first
DotNetGuide 编程学院
DotNetGuide 编程学院是一个专注于 C#/.NET/.NET Core 学习、工作、面试干货和实战教程分享的知识星球!当然这里不仅仅只有 C#/.NET/.NET Core 还有前端、云原生(Docker,K8s)、分布式,微服务、实用工具、学习书籍、AIGC、AI 赋能、求职和招聘资讯、热点资讯等多个领域,我们致力于构建一个积极向上、和谐友善的.NET 技术交流、学习平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
大姚发放了 100 张 DotNetGuide 编程学院知识星球 68 元新人立减优惠券,有兴趣的小伙伴可以领券加入(当前应该是星球最优惠的阶段),加入后如果感觉不值得,3 天内知识星球 APP 右上角退出,直接全额退款,无任何套路!
版权声明: 本文为 InfoQ 作者【追逐时光者】的原创文章。
原文链接:【http://xie.infoq.cn/article/2b31c3b25eefcca1214a872de】。文章转载请联系作者。







评论