EF框架
EF框架(Entity Framework)是一个由微软提供的对象关系映射(ORM)框架,允许开发者使用面向对象的方式来处理数据库操作。 EF框架的核心功能是将数据库中的表映射为应用程序中的对象,从而使得开发者可以通过操作这些对象来进行数据库操作,而不需要编写大量的SQL代码。
官方文档:实体框架文档中心 | Microsoft Learn
概念
- EF框架的主要组成部分包括实体数据模型(EDM),它由概念模型、存储模型和映射模型组成。概念模型定义了应用程序中使用的实体和关系,独立于数据库的具体实现;存储模型定义了数据库的结构,包括表、列和关系;映射模型则定义了概念模型和存储模型之间的映射关系。
- EF框架的优势在于它简化了数据库操作,使得业务逻辑和数据存取逻辑分离,减少了代码的复杂性。此外,EF框架支持LINQ to Entities,这是一种用于针对对象模型编写查询的查询语言,使得查询更加直观和灵活。
EF 的主要组成部分:
- Entity Data Model (EDM):EDM 是 Entity Framework 的核心,它定义了应用程序的数据模型。它包括三个主要部分:概念模型(CSDL)、存储模型(SSDL)和映射模型(MSL)。
- (1) 概念模型 (CSDL):概念模型定义了应用程序中使用的实体和关系。它是一个抽象层,独立于数据库的具体实现。
- (2) 存储模型 (SSDL):存储模型定义了数据库的结构,包括表、列、关系等。它与数据库的物理结构紧密相关。
- (3) 映射模型 (MSL):映射模型定义了概念模型和存储模型之间的映射关系。它指定了概念模型中的实体如何映射到存储模型中的表。
EF 的优势(与 的对比)
如果不用ORM框架,我们一般这样来使用ADO.NET进行数据库开发:
1.将ADO.NET对数据库的操作封装到一个类里SqlHelper中
2.在DAL层调用SqlHelper
3.其他层再调用DAL进行数据库操作
优势
- 1.【逻辑】业务逻辑和数据存取逻辑分离开来;
- 2.【新增操作】 EF:一次连接,执行多条sql;SqlHelper里使用一般写法,连接又无法释放,用using,会造成多次连接重置;
- 3.【更新操作】 EF自动优化,只update set 有变化的字段,EF也可以很方便地只更新 实体的指定属性,产生的sql语句里的set后的字段会更少;
- 4.【智能提示】 用linq, lamda表达式 有智能提示,写错了编译不过;写sql语句字符串,调sqlhelper,sql语句写错一样编译通过;
- 5.【安全】 省去了防止sql注入的麻烦;
- 6.【数据库变更】使用EF,切换较方便;
- 7.【效率】 使用EF要比使用Ado.net开发效率高;
- 8.【可读性】 代码的可读性更高.
EF的三种开发模式
Database First(数据库优先)
- 如果已经拥有数据库,Visual Studio中内置的Entity Framework设计器可以自动生成一个数据模型,该模型由对应于现有数据库对象(如表和列)的类和属性组成。有关数据库结构,数据模型及映射之间的信息以XML格式存储在.edmx文件中。实体框架设计器提供了一个可视化界面,您可以使用它来显示和编辑.edmx文件。
Model First(模型优先)
- 如果您还没有数据库,则可以使用Visual Studio中的Entity Framework设计器在.edmx文件中创建一个模型。当模型建完后,可以执行.edmx文件来创建数据库。
Code First(代码优先)
- 无论您是否拥有数据库,都可以使用Code First。如果没有数据库,可以编写类和对应于表和列的属性。如果有数据库,那么Entity Framework可以生成与现有表和列对应的类和属性。如果使用Code First创建数据库,则可以使用“migration(迁移)”来将数据库部署到生产环境。当数据模型更改时,可以将更改部署到生产环境中,而不改变原有的数据。