博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
To ADO.NET Entity Framework
阅读量:5896 次
发布时间:2019-06-19

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

ADO.NET Entity Framework的目标是,让程序员尽量少去应用SQL语句与数据层交互,这种思想是很好的。因为程序员们更擅长的是用语言,框架实现业务逻辑,当然,也有很多程序员是通SQL语法的。当然,DBA们也是不擅长去写代码的,特别是业务逻辑的操作。其实不擅长还好说,因为可以学习,可以练习,然后达到擅长。 但更重要的一点,就是延长了开发周期,增加了开发成本,这个是管理者不希望的。
为了解决程序员和DBA的工作,有很多好的想法,架构诞生,三方的很多,看一下微软的解决方案吧。
.NET出现后,就带着ADO.NET,ADO.NET是最原始的数据操作方式,虽然相比以前的数据连接方式来说,微软把数据连接,数据命令,以及数据集合都封装成对象,这在一定程度上已经让程序员操作数据库时得到了简化,但在操作数据库时,还是要写很多的SQL语句的,并且这些语的语法验证,只有在把这个语句送到数据库上去执行时,才执行,这种情况还加大了调试的难度。
在.net的第四个版本,即visual studio 2008中,引进来一种新的操作数据的技术,LINQ to SQL,通过向导,可以把数据的结构引入到程中,并且能完成数据库与对象,表与对象,字段与属性的对应,并且也能很好的解决存储过程,自定义函数与c#中方法的对应关系。虽然LINQ to SQL能帮程序员避免SQL语句,也能提高开发效率,但LINQ to SQL这个从数据库到实体类的映射是很死板的,很直接的,只是简单把表和实体类作了一一对应,没有真正的分析数据表之间的关系,作进一步的处理。另外一点,数据表结构与实体类结构的对应关系是固定的,但数据表数与实体对象就不是一一对应了,其实是一行数据,对应一个实体对象,也就是数据库表实际上是对应实体类的一个集合对象,这点在LINQ to SQL中也是没有很好的处理,因为直接映射,所以表名与实体名相同,所以对程序员来说,这个命名有点奇怪。
ADO.NET Entity Framework(以下简单EF)在visual studio2010中出现了,它很好的解决了LINQ to SQL不能解决的问题,他在从数据库映射实体类时作了分析,比如,如果两张表是多对多的关系,在EF中的视图中,是看不到多对多的这张表的,如下图:
 

(数据库的E-R图)
 

(EF中的实体关系图)
数库与实体间的映身,其实微软是通过一个 XML格式的配置文件存储起来的,格式如下图:
 

SSDL节是存储数据库端信息
CSDL节是存储实体端信息
C-S数据库与实体映射信息
下面的其他节点是关于生成视图后,EF各图布局及呈现。
关于实体的字称与数据表名的对应关于,我们看到,数据库表名是Users,Roles,Permissions,但实体都没有带有s,因为一个实体只表示数据表中的一行记录,这个转换是通过属性来设置的,如下图:
 

实体名称为User,实体的集合名称是Users。
对于数据库的操作,EF实现了基础的操作,但不是所有的DCL和DDL能完成的操作都能完成,比如对直接删除符合条件的数据,如果用EF去解决的话,实体没有提供这个功能,只能自己定存储过程,来完成,当然,对于数据的操作了,为了性能的优化,也最好是通过存储过程和自定义函数来完成操作。
对于其他数据的支持,微软没有提供,仅提供了对SQL Server的框架,当然我们可以建立在其他数据的Provider上去构建自己的EF也是可以的,参照SQL Server的架构来实现,也能达到这个效果。
本文转自桂素伟51CTO博客,原文链接: http://blog.51cto.com/axzxs/447481
,如需转载请自行联系原作者
你可能感兴趣的文章
大数据Benchmark
查看>>
windows server2008多用户远程登陆设置方法
查看>>
sencha touch巧妙使用请求超时提升用户体验
查看>>
15. 3Sum
查看>>
ArrayList源码解析
查看>>
基于SpringMVC、Maven以及Mybatis的环境搭建
查看>>
可见面判别算法---区域细分算法
查看>>
清理恢复文本框的默认值
查看>>
ViewPager Banner(广告墙)
查看>>
Spring Cloud 入门教程(二): 服务消费者(rest+ribbon)(Greenwich.RELEASE)
查看>>
iOS开发20:Navigation Bar的简单设置
查看>>
iOS开发24:使用SQLite3存储和读取数据
查看>>
Cocos2dx 2.0x Touch事件
查看>>
Yii2 Unable to verify your data submission 错误-CSRF
查看>>
angularjs-paste-upload
查看>>
解除 Linux 系统的最大进程数和最大文件打开数限制
查看>>
使用优盘或者移动硬盘安装Ubuntu
查看>>
RXjs相关
查看>>
百练2973: Skew binary 数 之 Java 题解
查看>>
SaltStack配置管理
查看>>