上篇一直再说EDM,但是什么是EDM呢?

          Entity Data Model就是所谓的实体数据模型,也就是EDM.VS中添加ADO.NET实体数据模型就可以直接画实体,向上可以方便我们的开发,向下直接映射到数据库,开发人员操作实体无须了解数据库表结构.下面就是.edmx中的两个实体了,我们这里不涉及数据库的概念,而是用一个叫做DBContext的上下文对象表示这些实体的集合.

EF框架核心--EDM设计器

          EDM设计器可以设计上面的模型,这个模型包括定义实体,主键,属性,关联,,,关系和索引等.其实,EDM的本质是一个xml文件,右击该文件可以选择用xml编辑器打开.这样一个文件复杂得让我们有点望而却步,先不要迫不及待地关掉它,听我说完:

 

EDM的三部分:

 

  1. CSDL-概念模型,由概念架构定义语言文件(.csdl)来定义
  2. 存储模型,由存储架构定义语言文件(.ssdl)来定义
  3. 映射,由映射规范语言文件(.msl)来定义

 

整个xml文件折叠起来如下所示:

EF框架核心--EDM设计器

首先,CSDL就是实体类,它定义了应用程序的业务层所知道的实体和关系,EntityType表示实体,EntitySet表示实体集,Association表示关系,key表示主键等.这是面向对象设计中一个最根本的组成部分,它体现了现实世界中对象最为一种计算中可以表示的对象设计方法.下面的代码有点长,主要是为了体现UserInfos和Departments的关联关系,这里给出了两个实体集的标量属性,Navigation Property是导航属性.

 

 1 <edmx:ConceptualModels>  
 2       <Schema Namespace="HighSchoolBaseTestModel" Alias="Self" p1:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:p1="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">  
 3         <EntityContainer Name="HighSchoolBaseTestModelEntities" p1:LazyLoadingEnabled="true">  
 4           <EntitySet Name="Departments" EntityType="HighSchoolBaseTestModelModel.Departments" />            
 5           <EntitySet Name="UserInfos" EntityType="HighSchoolBaseTestModelModel.UserInfos" />  
 6           <AssociationSet Name="DepartmentUserInfo" Association="HighSchoolBaseTestModelModel.DepartmentUserInfo">  
 7             <End Role="Departments" EntitySet="Departments" />  
 8             <End Role="UserInfos" EntitySet="UserInfos" />  
 9           </AssociationSet>  
10         </EntityContainer>  
11         <EntityType Name="Departments">  
12           <Key>  
13             <PropertyRef Name="ID" />  
14           </Key>  
15           <Property Name="ID" Type="Int32" Nullable="false" />  
16           <Property Name="Name" Type="String" Nullable="false" MaxLength="32" Unicode="true" FixedLength="false" />  
17           <NavigationProperty Name="UserInfos" Relationship="HighSchoolBaseTestModelModel.DepartmentUserInfo" FromRole="Departments" ToRole="UserInfos" />  
18         </EntityType>       
19         <EntityType Name="UserInfos">  
20           <Key>  
21             <PropertyRef Name="ID" />  
22           </Key>  
23           <Property Name="ID" Type="Int32" Nullable="false" />  
24           <Property Name="UserName" Type="String" Nullable="false" MaxLength="32" Unicode="true" FixedLength="false" />  
25           <Property Name="UserPassword" Type="String" Nullable="false" MaxLength="Max" Unicode="true" FixedLength="false" />  
26           <NavigationProperty Name="Departments" Relationship="HighSchoolBaseTestModelModel.DepartmentUserInfo" FromRole="UserInfos" ToRole="Departments" />  
27         </EntityType>  
28         <Association Name="DepartmentUserInfo">  
29           <End Role="Departments" Type="HighSchoolBaseTestModelModel.Departments" Multiplicity="*" />  
30           <End Role="UserInfos" Type="HighSchoolBaseTestModelModel.UserInfos" Multiplicity="*" />  
31         </Association>          
32       </Schema>  
33   
34 </edmx:ConceptualModels> 
View Code

相关文章:

  • 2021-05-22
  • 2021-07-28
  • 2021-07-17
  • 2021-08-25
  • 2021-07-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-18
  • 2021-09-15
  • 2021-10-28
  • 2021-06-26
  • 2021-04-19
  • 2021-04-21
  • 2021-09-30
相关资源
相似解决方案