zoukankan      html  css  js  c++  java
  • Entity Framework 二

    本篇主要介绍:创建了实体数据模型,生成了那些文件以及其代表意义

    创建实体数据模型

        上一篇的最后,我们创建了数据库,现在我们利用数据库来生成我们的实体数据模型,这种形式我们称为数据库优先,后面会介绍代码优先。

    新建一个控制台,版本设置为4.5

    添加 - >单击新建项目,从弹出菜单中选择ADO.NET实体数据模型,给新项目名称“School”,然后单击添加按钮。

    选择模型:

    连接到数据库:

    ⑤全部勾上

    如果数据库中的表名是复数,生成的对象名称复数或单数化 复选框会单独化一个实体集名称。例如,如果SchoolDB具有Students表名,那么entityset将是单数Student。

    同样,如果表格与其他表格有一对多或多对多的关系,则模型之间的关系将被复数化。例如,学生与课程表具有多对多的关系,所以学生实体集合将具有用于收集课程的多个属性名称“课程”。

    第二个复选框“ 在模型中包含外键列”包含外键属性,用于表示外键。例如,Student表与标准表具有一对多的关系。所以每个学生只有一个标准。为了在模型中表示这个,Student实体集包含标准导航属性的StandardId属性。如果这个复选框未被选中,那么它将只包含Standard属性,但不包含Student实体集中的StandardId。

    第三个复选框,将所选存储过程和函数导入到实体模型中,自动为存储过程和函数创建函数导入。您不需要手动导入,如实体框架5.0之前所必需的。

     ⑥生成 School.edmx

     双击School.edmx打开设计器

    实体-表映射

     EDM中的每个实体都与数据库表映射。您可以通过右键单击EDM设计器中的任何实体来检查实体表映射 - >选择表映射。另外,如果您从设计器更改实体的任何属性名称,则表映射将自动反映该更改。

     

     上下文和实体

     每个实体数据模型为EDM中包含的每个数据库表生成一个上下文类和实体类展开School.edmx并查看两个重要文件

    {EDM Name} .Context.tt 和   {EDM Name} .tt

     

     School.Context.tt:无论何时更改实体数据模型(.edmx文件),此T4模板文件都会生成一个上下文类。您可以通过展开School.Context.tt来查看上下文类文件。上下文类位于{EDM Name} .context.cs文件中默认的上下文类名是{DB Name} +实体例如,SchoolDB的上下文类名是SchoolDBEntities,那么上下文类是从实体框架中的DBContext类派生的。(在EF 5.0之前,它是从ObjectContext派生的。)

     

    School.tt:School.tt是一个T4模板文件,为每个数据库表生成实体类。实体类是POCO(普通旧CLR对象)类。下面的代码片段显示了学生实体。

     

    您可以在XML视图中打开此EDM设计器,您可以在XML视图中一起查看EDM的所有三个部分 - 概念架构(CSDL),存储架构(SSDL)和映射架构(MSL)。

    右键单击School.edmx - >单击“选择打开方式  ————》 XML编辑器打开”

    模型浏览器

       视图--->其他窗口---->实体数据模型浏览器           (如果在其他窗口里面没有看到实体模型浏览器,请你双击School.edmx)

          需要把这个打开,实体模型浏览器才会出现

     

     

    关系图:模型浏览器包含EDM的可视化图表。我们已经看到由EDM创建的默认视觉图。如果您的应用程序拥有大量实体,您也可以为一个EDM 创建多个图表

    实体类型:实体类型列出了所有映射到数据库表的类类型。

    复杂类型:复杂类型是由EDM生成的包含存储过程,表值函数等的结果的类。这些复杂类型是用于不同目的的定制类。

    枚举类型:枚举类型列出在实体框架中用作Enum的所有实体。

    关联:关联列出实体类型之间的所有外键关系。

    函数导入:函数导入列出将被映射到存储过程,表值函数等的所有函数。存储过程和表值函数将被用作函数而不是EF中的实体。

    .Store:存储表示数据库模式(SSDL)。

     
  • 相关阅读:
    day11
    day10
    day9
    day8
    day7
    day6
    day14
    day13
    day12
    day11
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/7813923.html
Copyright © 2011-2022 走看看