一、什么是EF
全称是Entity Framework,是微软以ADO.NET为基础发展来的对象关系映射(O/R Mapping)解决方案,研究如何将程序设计模型和数据库集成在一起。
通俗点讲就是,研究用实体操作来控制数据库的一种思想。以前我们是使用ADO.NET2.0中连接类(Command、Connection、DataReader、DataAdapter)等,通过向数据库发送SQL命令来操作表或视图。而EF实现了一套类似于ADO.NET2.0的连接类,即通过实体来操作EDM(Entity Data Model)实体数据模型。
官方术语:Entity Framework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性(association),让数据库的 E/R 模型完全的转成对象模型,如此让程序员能用最熟悉的编程语言来调用访问。
二、优点
这还得围绕它的核心工作来讲,它是通过操作实体来控制数据库,所以保证了程序设计模型和数据库的一致,避免了我们机房重构时出现的数据库中的字段名和实体不一致的错误。
三、应用
我把EF看做一种思想,它有三种实现模式:Database First、Model First和Code First。
1、 CodeFirst,就是写代码,然后映射到现有的数据库或新的数据库。这个模式适合代码量比较小的模型。
2、ModelFirst,就是先在vs中建立实体模型,然后再映射出数据库。
使用方法:修改VS中的实体模型,直接更改实体属性。在实体模型空白处中右击根据模型生成数据库。点击VS中的SQL脚本,右击执行。
3、dbFirst,就是先建立数据库,然后根据数据库在vs中映射出实体模型。适合的开发模型:已经有成熟的数据库,直接dbFirst比较方便。
使用方法:在数据库中直接修改字段名。修改完后,从模型中右击从数据库更新模型。
具体的操作步骤不在此一一截图展示。
四、心得
做项目的时候遇到这样一个问题:根据需求变化,表和字段名也在不断增减更新。开始我们使用ModelFirst模式更新,但是,每次更新后,数据库清空了,所有的数据都要重加,费时费力。但是如果使用dbFirst,就不会有这个麻烦了。所以更新还是建议用dbFirst模式。
感觉EF好强大,欢迎纠正补充。