Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >企业应用开发中.NET EF常用哪种模式?

企业应用开发中.NET EF常用哪种模式?

原创
作者头像
追逐时光者
修改于 2025-03-11 23:45:59
修改于 2025-03-11 23:45:59
4270
举报
文章被收录于专栏:编程进阶实战编程进阶实战

前言

本篇文章来源于微信技术群小伙伴的提问:在企业应用开发中.NET ORM EF常用哪种模式进行开发?今天我们一起来了解一下EF开发的三种模式。

EF介绍

Entity Framework(EF)是一种新式对象关系映射器,可用于跨各种数据库(包括 SQL 数据库(本地和 Azure)、SQLiteMySQLPostgreSQL 和 Azure Cosmos DB,使用 .NET(C#)构建干净、可移植和高级的数据访问层。 它支持 LINQ 查询、更改跟踪、更新和架构迁移。

  • 官方文档教程:https://docs.microsoft.com/zh-cn/ef
  • GitHub地址:https://github.com/dotnet/ef6

.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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
企业应用开发中.NET ORM EF常用哪种模式?
本篇文章来源于DotNetGuide技术社区微信交流小伙伴的提问:在企业应用开发中.NET ORM EF常用哪种模式进行开发?今天我们一起来了解一下EF开发的三种模式。
郑子铭
2025/04/18
1230
企业应用开发中.NET ORM EF常用哪种模式?
《Entity Framework 6 Recipes》翻译系列 (1) —–第一章 开始使用实体框架之历史和框架简述「建议收藏」
  微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行。虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF版本更新太快,没人愿意去花时间翻译国外关于EF的书籍。使用Entity Framework开发已经有3年多了,但用得很肤浅,最近想深入学习,只好找来英文书《Entity Framework 6 Recipes》第二版,慢慢啃。首先需要说明的是,我英文不好,只是为了学习EF。把学习的过程写成博客,一是督促自己,二是希望能帮助有需要的朋友。EF是微软极力推荐的新一代数据库访问技术,它已经成熟,做为一名.NET开发人员,如果你还没有使用它的话,那感紧开始吧,特别是DDD(领域驱动设计)的爱好者,更应该学习它,因为它是领域模型的绝佳搭档!另外,本书也是一本关于EF的佳作(其实,英文的关于EF的书也就那么几本,中文的目前还没有,只有一些零星的资料,这会让初学者会感觉到混乱,特别是什么EDMX文件、Code First、Model First、Database First、表拆分,实体拆分,TPT,TPH,TPC,CodeFirst和DDD的配合等等),就从本系列开始对EF进行一个系统的学习吧,老鸟也可以从中了解不少的知识点。文中肯定有很多翻译不当的地方,恳请你指正,以免误导大家。谢谢!由于书中的代码只贴出核心部分,如果你想运行示例代码,可以加入QQ群下载,因为太大,超过博客园的限制,所以这里提供不了下载。要说的就这么多,下面就开始这一段学习过程吧。
Java架构师必看
2022/03/30
1.6K0
《Entity Framework 6 Recipes》翻译系列 (1) —–第一章 开始使用实体框架之历史和框架简述「建议收藏」
EF基础知识小记二
1、EF的常用使用场景 (1)、维护一个已经存在的数据库,VS提供了工具帮助我们把数据库中的表和视图等对象导入到实体框架.        [数据库=>模型(Database First)] (2)、通过VS提供的实体设计器设计表模型,然后从头开始添加实体类型、类型间的关联以及继承体系到设计器中.模型创建好后,然后根据模型生成数据库.     [模型=>数据库(Model First)] (3)、EF还提供了以代码为中心的模型设计方式,通过这种方式我们可以在不使用设计器的情况下,手工创建一系列的领域类、领域类
郑小超.
2018/01/26
1.3K0
金三银四面试:C#.NET面试题中高级篇5-Linq和EF
实体框架EF是http://ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。
郑子铭
2022/04/19
4.7K0
Entity Framework Core 简介
今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简称 EF Core),是 EF6 之后微软推出的开源的轻量级可扩展跨平台 ORM 框架。 EF Core 需要和 .NET Core 应用程序一起使用,并且需要 .NET 4.5+ 版本。下面列举一下 EF Core 所支持的项目类型:
喵叔
2020/09/08
2.1K0
EF原理
实体框架(Entity Framework)简称EF,是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案。是ADO.NET中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
全栈程序员站长
2022/08/09
8530
EF原理
EF基础知识小记一
1、EF等ORM解决方案出现的原因 因为软件开发中分析和解决问题的方法已经接近成熟,然后关系型数据库却没有,很多年来,数据依然是保存在表行列这样的模式里,所以,在面相对象和高度标准化的数据库中产生了一个失配(不匹配、阻抗失配,微软的安德斯.海尔斯伯格<C#之父>可能会这样叫它),为了解决这个失配,大多数项目中都会引入"数据处理层"来转换应用程序实体层的数据到数据库的行和列中,随着"数据处理层"的不断进化,最后ORM就诞生了。 2、集成查询语言LINQ LINQ和EF都出自于微软,都能帮助我们解决失配的问题.
郑小超.
2018/01/26
1.9K0
Entity Framework三大开发模式详解
Entity Framework(EF)是.NET平台下的一种对象关系映射(ORM)框架,它简化了与数据库的交互,使开发人员能够以面向对象的方式来操作数据库。在Entity Framework中,有三种主要的开发模式:Database First、Model First和Code First。本文将深入探讨这三种开发模式,通过生动的语言和丰富的示例代码,让小白也能轻松理解。
繁依Fanyi
2024/01/25
6181
entity framework数据库映射(ORM)
Sql Server安装:EntityFramework Mysql安装:MySql.Data.Entity
sofu456
2022/05/06
1.1K0
entity framework数据库映射(ORM)
【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问
Entity Framework Core(简称EF Core)是微软推出的一个轻量级版的Entity Framework,它是一个开源的、跨平台(Windows、Linux和macOS)的对象关系映射(ORM)框架。EF Core 旨在提供快速的数据访问和强大的数据库操作功能,同时保持较低的资源占用。 EF Core 支持与多种数据库系统的集成,包括 SQL Server、SQLite、MySQL、PostgreSQL 和 Oracle 等。它提供了 Code First 开发方法,允许开发人员通过代码来定义模型、配置映射关系和创建数据库。此外,EF Core 还支持数据迁移,使得在开发过程中数据库模式的变更更加容易管理和部署。 EF Core 与传统的 Entity Framework (EF) 相比,具有以下特点:
喵叔
2024/05/24
1.4K0
盘点 .NET 比较流行的开源的ORM框架
对于我们而言选择ORM框架的目的,其实都是为了让我们的程序更好的操作数据库,提高开发编程效率和程序的维护拓展性。
用户9127601
2022/11/28
4.9K0
entity framework数据库映射
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
sofu456
2019/12/03
1.1K0
Linq基础知识小记四之操作EF
1、EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Data Model,这提供了额外的灵活性,但在性能和简单性上面也会有所损失. EF的优点:在数据库架构和实体类之间的映射提供了更好的灵活性,还通过程序支持除了SqlServer之外的数据库. Linq To Sql之于EF Linq To Sql和EF师出同门,EF支持LINQ to SQL几乎同样的查询功能,所以
郑小超.
2018/01/26
2.2K0
Entity Framework学习笔记——EF简介(一篇文章告诉你什么是EF)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/41526763
DannyHoo
2018/09/13
2.3K0
Entity Framework学习笔记——EF简介(一篇文章告诉你什么是EF)
Entity Framework快速入门
实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
老马
2022/05/10
6230
Entity Framework快速入门
面向初学者的 Entity Framework Core
实体框架核心(Entity Framework Core,简称EF Core)是一款适用于.NET应用程序的开源、轻量级且跨平台的对象关系映射器(Object-Relational Mapper,简称ORM)。它允许开发人员使用.NET对象来操作数据库,从而无需编写大多数SQL查询语句。EF Core通过对数据库交互的复杂性进行抽象,使得数据访问代码更易于维护、扩展和测试。
郑子铭
2025/02/18
4100
面向初学者的 Entity Framework Core
Asp.net MVC 中 CodeFirst 开发模式实例
  昨天写的这篇博客因为下班时间到了忘记保存了,好郁闷,得重新写一遍。实习所在公司使用的是CodeFirst开发模式,最近开始参与到公司的项目里面来了,发现这个模式特别好用,建库建表改变字段属性添加删除字段等等操作都无需自己在数据库动手操作,只需要编写代码即可实现,着实是方便了许多。今天来记录一下如何使用CodeFirst开发模式,闲言少叙,下面进入正题。
CherishTheYouth
2019/07/30
1K0
Asp.net MVC 中 CodeFirst 开发模式实例
ASP.NET MVC5高级编程——(3)MVC模式的模型
前面两篇文章我们分别讲了MVC下的视图和控制器,这章我们要讲模型(model),这章由于涉及到基架的使用,还有对模型绑定后数据库相关知识,可能会 很抽象,慢慢来吧,↖(^ω^)↗!在这之前可以先看看老师上课提的几个问题,相信看完了,你就对MVC中的模型有了个初步的了解了!
浩Coding
2019/07/03
5.5K0
EF基础知识小记三(设计器=>数据库)
本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1、通过EF设计器创建一个简单模型 (1)、右键目标项目添加新建项 (2)、选择ADO.Net
郑小超.
2018/01/26
1.1K0
C#进阶-Entity Framework 5 原理与使用详解
本文详细介绍了Entity Framework 5(EF5)在C#中的使用方法,包括EF5的基本概念、与其他持久层框架的比较、基本语法和高级语法的使用,并通过实例讲解了如何在项目中集成和使用EF5。作为微软提供的ORM(对象关系映射)框架,EF5在简化数据库操作、提高开发效率方面发挥了重要作用。本文还将深入探讨EF5的核心原理,通过内部代码展示其工作机制。最后,总结了EF5的优缺点及其在实际开发中的应用场景,为开发者提供全面的指导。
Damon小智
2024/08/17
5671
C#进阶-Entity Framework 5 原理与使用详解
相关推荐
企业应用开发中.NET ORM EF常用哪种模式?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档