博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序言<EntityFramework6.0>
阅读量:6799 次
发布时间:2019-06-26

本文共 1964 字,大约阅读时间需要 6 分钟。

Entity Framework是微软战略性的数据访问技术,不同与早期访问技术,Entity Framework并不耦合在Visual Studio中,它提供了一个全面的, 基于模型的生态系统,使您能够开发包括桌面、互联网、云计算和基于服务的应用程序等

历史

EFVersion1 支持Database Frist

EFVersion4 支持Database Frist+Model First【along with full Plain Old CLR Object (POCO) support and

default lazy loading behavior】

EFVersion4.1一EFVersion4.3 支持Database Frist+Model First+Code Frist

EFVersion5  改进性能,支持枚举,表值函数、空间类型, 存储过程【此时只限于Database Frist】,与MVC框架的进一步结合。

EFVersion6 提供了异步的查询和更新,在CodeFrist中开始支持存储过程,提升性能以及引入一些新特性。

模型

使用EntityFramework创建一个模型,最显著的特点就是创建一个实体数据模型(Entity Data Model【EDM】),使用EDM可以自定义实体类和数据表之间的映射关系

Developer:只需要着眼于领域对象模型的开发【即可以直观描述具体问题信息的类】

DBA:更多的从性能,扩展性,易维护性和高度规范性去设计数据库。

例如:上图中的Employees, Devices, Phone信息存在三个不同的物理数据表中,这是从DBA的角度考虑的,但是存developer角度设计的时候,他会在Employee类中包含Devices, Phone的集合信息,同样的,DBA将与部门相关的所有信息全部放在一张Depeartment表中,而developer根据开发的关注的问题需求,将其细分为(会计,市场营销,金融等具体实体对象)。也就是说从不同的角度看问题,developer不会去关心DBA怎么设计数据表,DBA也不会去关心developer怎么设计实体类。他们可能同处在一个项目组中,可行其职,最优化的设计自己的方案而互不影响充分的解耦,而交互的工作就由EntityFramework进行处理了。

 Entity Data Model 由概念层,存储层,映射层构成,每一层都是相互独立的。

其中实体类是包含在概念层【conceptual layer】中,而这一层也是开发人员最关心的。也可以利用EntityFramework自带的工具进行反向工程,即从已存在的数据库创建实体类,其所用的语法为概念架构定义语言【CSDL】。

实体数据模型的存储层定义表,列,关系和数据类型如何映射到底层数据库。其所用的语法为存储架构定义语言(SSDL).

映射层定义的概念和存储层之间的映射。除此之外,这层定义了如何从实体类的属性映射到数据库表中的列。这个层被暴露给开发者,developer可以利用EntityFramework设计映射详细信息的窗口或者数据注解的方式以及如果使用Code Frist方式时可利用Fluent API进行定义,其所用的语法为映射规范语言(MSL)

术语

EntityType代表域模型中的一个类。EntityType的一个实例是通常被称为一个实体。如果您使用的是EntityFramework的设计器,可以看到如上图所示的表示。EntityType通常有一个或多个属性。属性可以是简单的类型,如整型,字符串,等等;或者复杂类型;或者是集合。导航属性用于关联其他相关实体(通常通过外键关系数据库中的表示)。非导航属性被称为标量属性

两个实体之间的关系被称为关联。EntityTypes之间的关联显示在设计视图中是连接EntityTypes的一条线。

 EntityType有一个属性或一组属性代表其的EntityKey属性。一个的EntityKey唯一标识该实体,它最常被映射到底层数据库的一个主键 。

 context object 是获取EntityFramework服务的网关。管理数据库连接,生成参数化SQL,执行数据存取,缓存对象,跟踪和抽象数据转换为包含具体的参数类型的实体类。

DbContext 是对EntityFramework支持的ObjectContext的一种包装,因而更加直观,友好。

 怎么编码

1.EF/VS借力于T4模板自动生成代码

2.使用CodeFrist的模式手动编写独立于EntityFramework管道的POCO类【也可借助Entity Framework Power Tool反向生成】。

 

转载地址:http://xzywl.baihongyu.com/

你可能感兴趣的文章
[MySQL光速入门]019 分别使用loop, while, repeat 来计算 从0加到100 答案
查看>>
浅析libuv源码-node事件轮询解析(2)
查看>>
区块链软件公司:区块链技术去中心化
查看>>
Python爬虫的基本概念、分类、学习路线以及爬取数据思路
查看>>
BCH或许才是真正的未来
查看>>
python编程:从入门到实践学习笔记-函数
查看>>
SpringBoot使用Nacos配置中心
查看>>
Java四种线程池的使用
查看>>
Go学习系列——第一个 Go程序
查看>>
关于ntp时间同步理论及配置参数-20170804
查看>>
loadrunner 脚本开发-int型变量和字符串的相互转换
查看>>
为什么运行NOVA命令总要报一个DEBUG,没找到原因,路过的大侠一起看看啊
查看>>
北电ERS1600,8300,8600交换机的基本技术-第十章接口高级特征
查看>>
我的友情链接
查看>>
20170830L08-06老男孩linux实战运维培训-Lamp系列之-Apache服务生产实战应用指南03
查看>>
我的友情链接
查看>>
今天面试IBM CSDL
查看>>
React+Node.js+Express+mongoskin+MongoDB
查看>>
【深入浅出MyBatis系列九】改造Cache插件
查看>>
Centos6.3 路由模式配置Open×××服务器
查看>>