EF框架如何搭建

简介: EF框架如何搭建

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使用场景

  1. 从数据库生成Class
    2.由实体类生成数据库表结构
  2. 通过数据库可视化设计器设计数据库,同时生成实体类。

EF分类

Model First(模型优先)

利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后根据这些实体,关系去生成数据库对象及相关代码文件。

Code First(代码优先)

此模式需要先写出实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象。此方法与Model First类似。利用代码来表示实体模型,而Model First则是用可视化的方式描述实体模型

Database First(数据优先)

基于已经存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,然后生成实体框架和相应代码。

EF安装

1、创建一个空白的项目

2选个空项目,创建

工具-。。。

项目—添加—新建项

双击

服务器写 . 默认本地服务器

连接数据库的时候选择复合自己条件的

测试连接,连接成功

点击确定

这样就成功啦!

注意:设计数据库的时候要设置主键,如果没有主键,设置一个自增ID即可。


相关文章
|
6月前
|
人工智能 运维 供应链
传统风电场运营效率低下,为何大模型技术能让智慧风电场实现运营效率大幅提升?
本文产品专家三桥君深入解析大模型如何赋能智慧风电场,涵盖故障预测、风险评估、电力优化等核心模块,助力风电行业智能化升级,迈向清洁能源未来。
218 0
|
10月前
|
存储 消息中间件 Kafka
官宣 | Fluss 0.6 发布公告
Fluss社区宣布0.6.0版本正式发布,历经3个多月开发,45位贡献者完成200+代码提交。新版本亮点包括:列压缩技术降低6倍存储空间、MergeEngine支持灵活主键合并策略、Prefix Lookup实现Delta Join功能。这些特性增强了Fluss的功能和性能,标志着其在构建下一代分析型流存储系统上的重要进展。
461 1
官宣 | Fluss 0.6 发布公告
|
11月前
|
移动开发 前端开发 JavaScript
React 音频上传组件 Audio Upload
本文介绍如何使用React构建音频上传组件,涵盖文件上传原理、React中文件处理步骤及常见问题解决方案。通过代码示例详细讲解了文件格式和大小限制、预览功能、进度条显示等实现方法,并针对跨域问题、文件名冲突和错误处理等易错点提供了解决方案,帮助开发者构建稳定可靠的音频上传功能。
331 25
|
11月前
|
安全 数据挖掘 网络安全
千星计划视频号爆单模式开发
千星计划视频号爆单模式结合短视频平台与电商带货,通过招募头部商家和达人,利用其影响力推动销售。核心功能包括达人注册、商品管理、自动化操作、社交裂变、佣金结算和数据分析。项目旨在提升视频号橱窗的销售额和影响力,提供高效销售渠道及低门槛高收益的创业平台。注意合规性、用户体验、安全性和市场推广,确保合法合规运营。
|
Java 开发者
深入理解BigDecimal:精度保障的秘诀
【10月更文挑战第29天】
464 5
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的无限可能:技术前沿与应用实践
【10月更文挑战第23天】探索人工智能的无限可能:技术前沿与应用实践
|
关系型数据库 MySQL PHP
MySQL 随机获得一条数据的方法
MySQL 随机获得一条数据的方法
1777 0
|
机器学习/深度学习 人工智能 算法
揭开深度学习与传统机器学习的神秘面纱:从理论差异到实战代码详解两者间的选择与应用策略全面解析
【10月更文挑战第10天】本文探讨了深度学习与传统机器学习的区别,通过图像识别和语音处理等领域的应用案例,展示了深度学习在自动特征学习和处理大规模数据方面的优势。文中还提供了一个Python代码示例,使用TensorFlow构建多层感知器(MLP)并与Scikit-learn中的逻辑回归模型进行对比,进一步说明了两者的不同特点。
722 2
|
机器学习/深度学习 人工智能 算法
|
机器学习/深度学习 数据采集 自然语言处理
【论文精读】大语言模型融合知识图谱的问答系统研究
论文题目:大语言模型融合知识图谱的问答系统研究