首页 > 代码库 > Entity Framework

Entity Framework

EntityFramework(EF)

   刚刚开始学习EntityFramework。

   看到一篇文章,感觉不错,这是原始链接http://www.cnblogs.com/mecity/archive/2011/07/07/2099598.html#!comments

   以下是个人整理后的文章

 

EDM文件

    EDM是实体数据关系映射的XML文件,不同于Nhibernate每个对象单独映射一个XML文件。

    三部分:

             CSDL:表示实体数据模型结构

             SSDL:表示对应的数据存储的架构

             MSL:   CSDL实体与SSDL数据结构的关系通过MSL映射实现。

 

     生成方式:

              通过ADO.NET实体数据模型生成

              1.基于数据库(DataBase First)

              2.创建空EDM模型(Model First)

    

      基于EDM模型生成代码的方式

               1.ADO.NET实体数据模型    最初EF的方式,实体模型EntityObeject与ObjectContext耦合在一起,不适合分层使用

               2.ADO.NET自跟踪实体生成器   分离生成基于POCO的SelfTrackingEntityObject模型和ObjectContext(这种方式即使设置了延迟加载,也无法加载关联导航属性,要在使用时手动加载)

               3.ADO.NET DbContext Generator 分离生成纯POCO模型和轻型DbContext。DbContext较之ObjectContext比较简洁,且POCO可以充分利用。

       现在我们所用的就是第三种。

      

       EF框架有三种开发模式:

                1. DataBase First(数据库优先)

                2. Model First(模型优先)

                3. Code First(代码优先)

        DataBase First   

             传统的表驱动方式创建edm,然后通过edm生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成纯POCO模型和轻型DbContext。

             在设计器中逆向生成Model,并有Model自动生成所有类。

       Model First 

             先创建EDM模型,再生成DDL数据库脚本和模型、数据层代码。除生成实体模型和自跟踪实体模型,支持生成POCO模型和轻型DbContext。

             在设计器中创建Model,并用Model生成数据库。所有的类由Model自动生成。

        Code First

             手动创建POCO模型,数据层DbContext及映射关系,通过DataBase.SetInitializer生成数据库,方式灵活,但代码工作较多。

             CodeFirst也可以分为两种

                  Code First(New DataBase): 在代码中定义类和映射关系并通过model生成数据,使用迁移技术更新数据库。

                  Code First(Existing DataBase): 在代码中定义类和映射关系,给逆向工程提供工具 

         

Entity Framework