使用EF之前必须要对EF有个宏观的了解.学习任何一种技术都要像门卫一样问几个问题.
第一,它是谁?
第二,从哪里来?
第三,到哪里去?
默念一遍:不谋全局者,不足谋一域.
今天老师宏观给讲了一下EF的好处,抛出为什么要用EF的问题,我们的回答仅仅是概念和技术上的浅显的认识,老师的话我并未全部理解.先来整理一下自己所认识的EF吧.
Entity Framework是ORMapping的一种具体实现,那ORMapping又是什么呢?ORM--ObjectRelation
Mapping,即对象关系映射框架/数据持久化框架,是根据实体对象操作数据表中数据的一种面向对象的操作框架.
其实Entity Framework的底层也是调用Ado.Net,它是更高层次的封装.作为数据访问的技术,EntityFramework的设计有高扩展性,这一点可体现在其映射定义的灵活性.简单地说,使用Entity
Framework可以充分地定义与数据库表映射的实体,这个实体可以直接用于业务逻辑层或作为服务的数据契约.使用EF后,可以将实体类的设计工作完全放在EDM的设计过程中,而不需要手工写那些大同小异的代码,令人欣喜的是这个实体模型可以在运行时修改并生效,做到一改全改.我们开发时也不用再频繁地与数据库打交道,我们操作实体模型的同时EF框架自动完成了对数据库的操作.
对于一种新了解的技术,了解宏观是必须的,但是要想尽快熟悉还是要做一做的,写一写demo.这次底层设计一直在讨论教育云平台的实体部分使用哪种模式,我们知道网络上特别流行Codefist,下面就来说一说EF框架划分的模式:
- DataBase First
- Model First
- CodeFirst
DataBase First传统的表驱动方式创建EDM,然后通过EDM生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。
Model First先创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。
Code First手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是代码工作较多。
虽然Code First灵活,但是我们不可能手工去写大量的POCO类和映射关系。下一步看我们的开发吧.