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的主要特点包括:
- DbContext:这是 EF Core 的核心概念,它代表与特定数据库的连接,用于执行查询和保存数据。
- 模型类:这些是定义数据模型的类,通常与数据库中的表相对应。
- 迁移:EF Core 使用迁移来管理数据库架构的变化,允许开发者在模型更改后更新数据库。
- LINQ 查询:EF Core 支持使用 LINQ 进行数据查询,这使得查询操作更加直观和类型安全。
- 延迟加载和预加载:EF Core 支持延迟加载和预加载,以优化应用程序的性能。
使用 EF 时,你可以通过 NuGet 包管理器安装所需的 EF 版本和数据库提供程序。然后,你可以创建模型、配置 DbContext,并使用 LINQ 或其他 EF 方法来查询和操作数据。
EF 适用于各种规模的项目,从简单的应用程序到复杂的多层企业应用。它简化了数据访问代码的编写,使开发者可以专注于业务逻辑。