EF出现背景
1、以前程序设计师一定要为了连接与访问数据库而去学习 SQL 指令,因此在信息业中有很多人都在研究如何将程序设计模型和数据库集成在一起,对象关系对应 (Object-Relational Mapping) 的技术就是由此而生。
2、像Hibernate或NHibernate都是这个技术下的产物,而微软虽然有了ADO.NET这 个数据访问的利器,在SqlHelper 里面面通过设置connection ,command ,dataset,datareader等来与数据库交互,这样的话使得我们开发人员把很多精力放在了管理数据访问的ADO.NET 代码上,但是后来在EF 框架中把这块代码进行了封装,开发人员直接通过实体类来完成对数据库的操作。而微软虽然有了ADO.NET这 个数据访问的利器,但却没有像NHibernate这样的对象对应工具,因此微软在.NET Framework 2.0发展时期,就提出了一个ObjectSpace的概念,ObjectSpace可以让应用程序可以用完全对象化的方法连接与访问数据库,其技术概念 与NHibernate相当类似。
3、然而ObjectSpace工程相当大,在.NET Framework 2.0完成时仍无法全部完成,因此微软将ObjectSpace纳入下一版本的.NET Framework中,并且再加上一个设计的工具(Designer),构成了 ADO.NET Entity Framework。
Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以 及支持 Entity Framework 的数据提供者 (provider),让数据访问的工作得以顺利与完整的进行 。
(1) 概念层(Conceptual Mode):负责向上的对象与属性显露与访问。这将独立于您的数据库表设计。
(2) 对应层(Mapping):将上方的概念层和底下的储存层的数据结构对应在一起。
(3) 储存层(Storage Model):存储模型是包括表,视图,存储过程及其关系和密钥的数据库设计模型。依不同数据库与数据结构,而显露出实体的数据结构体,和 Provider 一起,负责实际对数据库的访问和 SQL 的产生。
LINQ to Entities: LINQ to Entities是一种用于针对对象模型编写查询的查询语言。它返回在概念模型中定义的实体。你可以在这里使用你的LINQ技能。
Entity SQL:实体SQL是另一种查询语言(仅适用于EF 6),就像LINQ to Entities一样。然而,这比L2E稍微难一些,开发者需要单独学习。
ObjectServices:对象服务是访问数据库中的数据并将其返回的主要入口点。对象服务负责实现,这是将从实体客户端数据提供者(下一层)返回的数据转换为实体对象结构的过程。
Entity Client Data Provider:此层的主要职责是将LINQ-to-Entities或实体SQL查询转换为底层数据库可以理解的SQL查询。它与ADO.Net数据提供者通信,而ADO.Net数据提供者又从数据库发送或检索数据。
ADO.Net Data Provider:该层使用标准的ADO.Net与数据库进行通信。
EF框架是什么?
Entity Framework(EF) Core是ADO.NET的开源对象关系映射(ORM)框架。 但是由于Entity framework版本6与.NET Framework分离,它是.NET Framework的一部分。ADO.NET Entiry Framework是微软以ado.net为基础发展起来的对象关系对应的解决方案。EF的出现的意义是程序员不用在思考sql语句了。微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。
EF使用场景
- 从数据库生成Class
2.由实体类生成数据库表结构 - 通过数据库可视化设计器设计数据库,同时生成实体类。
EF分类
Model First(模型优先)
利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后根据这些实体,关系去生成数据库对象及相关代码文件。
Code First(代码优先)
此模式需要先写出实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象。此方法与Model First类似。利用代码来表示实体模型,而Model First则是用可视化的方式描述实体模型
Database First(数据优先)
基于已经存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,然后生成实体框架和相应代码。
EF安装
1、创建一个空白的项目
2选个空项目,创建
工具-。。。
项目—添加—新建项
双击
服务器写 . 默认本地服务器
连接数据库的时候选择复合自己条件的
测试连接,连接成功
点击确定
这样就成功啦!
注意:设计数据库的时候要设置主键,如果没有主键,设置一个自增ID即可。