当前位置: 首页 > news >正文

C#EF框架

EF概念:

实体框架(Entity Framework)是一种对象关系映射器(O/RM),它使.NET开发人员能够通过.NET对象来操作数据库。它消除了开发人员通常需要编写的大多数数据访问代码的需求。ORM框架有个优势:解放开发人员编写数据库操作逻辑,把关注点转移到业务逻辑。提高开发效率。(开发快,节省成本。)

ORM:对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
即:把数据库中的表结构映射成语言中的对象。

Entity Framework 有两个主要版本:

  • Entity Framework 6(EF6):是一个成熟的、非开源的 ORM,仅支持 .NET Framework。

  • Entity Framework Core(EF Core):是 EF 的轻量级、跨平台、开源版本,支持 .NET Core 和 .NET 5/6/7+。

ORM关系映射框架有很多,C#中比较流行的有:N层架构、微软官方(EF框架)、国外的(Dapper、NHibernate等)、国内的(SqlSugar、Dos.ORM等)

EF组成:

1、EDM(实体数据模型): EDM包含三个主要部分——概念模型、映射、存储模型。(重要)
 概念模型(entity): 概念模型包含了模型类和它们之间的关系。 这将是独立于数据库表设计。(想法)
 存储模型(data): 存储模型是数据库设计模型,包括表、视图、存储过程等、以及它们之间的关系和主键,外键。(设计)
 映射(mapping): 映射由概念模型如何映射到存储模型的信息组成。(转换)

2、LINQ To Entity(L2E): L2E是一种的查询实体对象的语言, 它返回在概念模型中定义的实体。 Linq

3、Entity SQL: Entity SQL是一个类似于L2E的查询语言。 然而,它比L2E更加复杂。

4、Object Services(对象服务):对象服务是访问数据库中的数据并返回数据的主要入口点。它负责数据实例化,把Entity Client Data Provider(下一层)的数据转换成实体对象。

5、Entity Client Data Provider:主要职责是将L2E或Entity Sql转换成数据库可以识别的Sql查询语句,它通过ADO.Net Data Provider向数据库发送或者索取数据。

6、ADO.Net Data Provider:使用标准的ADO.net与数据库通信。

三种使用方式:

数据库优先  database first(数据库已经设计好,基本不改动的情况下使用)
模型优先    model first(先设计模型,再根据模型生成数据库实体对象和相关访问数据库的代码)
代码优先    code first(推荐,先写代码,再生成数据库)

代码优先使用步骤:

代码优先支持数据迁移,代码优先使用步骤:

a. 安装EF框架
b. 在当前项目中启用数据迁移,执行命名:Enable-Migrations
c. 添加迁移版本,执行命令:Add-Migration 版本

EF的主要特点包括:

  1. DbContext:这是 EF Core 的核心概念,它代表与特定数据库的连接,用于执行查询和保存数据。
  2. 模型类:这些是定义数据模型的类,通常与数据库中的表相对应。
  3. 迁移:EF Core 使用迁移来管理数据库架构的变化,允许开发者在模型更改后更新数据库。
  4. LINQ 查询:EF Core 支持使用 LINQ 进行数据查询,这使得查询操作更加直观和类型安全。
  5. 延迟加载和预加载:EF Core 支持延迟加载和预加载,以优化应用程序的性能。

使用 EF 时,你可以通过 NuGet 包管理器安装所需的 EF 版本和数据库提供程序。然后,你可以创建模型、配置 DbContext,并使用 LINQ 或其他 EF 方法来查询和操作数据。

EF 适用于各种规模的项目,从简单的应用程序到复杂的多层企业应用。它简化了数据访问代码的编写,使开发者可以专注于业务逻辑。


http://www.mrgr.cn/news/23871.html

相关文章:

  • virsh命令的使用
  • 任意论文一键变播客,谷歌正式发布Illuminate,它能重构研究者的学习方式吗?
  • 单词排序C++实现
  • Spring Boot 注解探秘:JSON 处理的魔法世界
  • 1.滑动窗口问题
  • 冒泡排序;选择排序;插入排序;快排;判断大小端;位运算
  • Delphi 12.1安卓APP开发中获取硬件信息及手机号
  • JAVA进阶学习15
  • 【Go】-Gin框架
  • LCR 021
  • 智能优化算法-樽海鞘优化算法(SSA)(附源码)
  • 一款好用的电子样本册转换器
  • JAVA中在junit测试类中加载Spring托管,通过注解使用Bean
  • shell的使用sed处理数据
  • 轻量级模型解读——GhostNet系列
  • Git版本控制工具
  • day-52 三数之和
  • Qt放Element网页滑动菜单栏
  • udp的广播,多播,单播 demo
  • 图书馆上新了!新华书店×度小满推出“开学季悦读计划”公益活动