EntityFramework核心是EDM实体数据模型,该模型由三部分组成。

(1) 概念模型,由概念架构定义语言文件(.csdl)来定义.

(2) 映射,由映射规范语言文件(.msl)定义.

(3) 存储模型,由存储架构定义语言文件(.ssdl)来定义,亦称逻辑模型.

上述概念比较抽象,归根到本质,这个EDM可以看作一个XML文件,该文件包含了三部分:CSDL,MSL和SSDL。

1) CSDL,我们常用的实体类。

  该部分(XML)包含了实体,属性,主键,关联等等。大致结构如下:

<EntityContainer Name="A">

  <FunctionImport />

  <EntitySet Name="Customer" EntityType="ASSModel.Customer" />

  <AssociationSet />

  <EntityType Name="Customer">

    <Key><PropertyRef Name="CustomerId_Guid" /></Key> 

     <Property Name="CustomerId_Guid" Type="Guid" Nullable="false"  />   

<Property Name="CustomerName_Nvarchar" Type="String" Nullable="false" MaxLength="200" Unicode="true" FixedLength="true" />

  </EntityType>

</EntityContainer>

2) SSDL,与CSDL文件结构类似,偏向以数据库概念来描述。大致结构如下:

<EntityContainer Name="B">

...

</EntityContainer>

<EntityType>

  <Property Name="CustomerName_Nvarchar" Type="nvarchar" MaxLength="200" />

  ...

</EntityType>

3) MSL,描述的是CSDL与SSDL的对应关系,包括CSDL中的属性与SSDL中列的对应关系。大致结构如下:

<EntityContainerMapping StorageEntityContainer="B" CdmEntityContainer="A">

  <EntitySetMapping Name="Assignments">

    <EntityTypeMapping TypeName="IsTypeOf(ASSModel.Assignments)">

      <MappingFragment StoreEntitySet="Assignments">

        <ScalarProperty Name="CustomerName_Nvarchar" ColumnName="CustomerName_Nvarchar" />

      </MappingFragment>

    </EntityTypeMapping>

  </EntitySetMapping>

</EntityContainerMapping>

XML文件中的还有很多细节东西,可以构建一个EDM打开看一看。

EntityFramework(1)的更多相关文章

  1. EntityFramework Core Raw SQL

    前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...

  2. 恋爱虽易,相处不易:当EntityFramework爱上AutoMapper

    剧情开始 为何相爱? 相处的问题? 女人的伟大? 剧情收尾? 有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易 ...

  3. 关于这段时间学习 EntityFramework的 一点感悟

    Ado.Net,用了N多年,Entity Framework也关注了很多年. 每当项目转型的时候,就花费大巴的时间,学习一番,潮流的东西. 这个Orm很多,这个EF很火,这么多年了,我还是不敢用,虽然 ...

  4. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  5. 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程

    读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...

  6. ABP文档 - EntityFramework 集成

    文档目录 本节内容: Nuget 包 DbContext 仓储 默认仓储 自定义仓储 特定的仓储基类 自定义仓储示例 仓储最佳实践 ABP可使用任何ORM框架,它已经内置了EntityFrame(以下 ...

  7. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  8. 神马玩意,EntityFramework Core 1.1又更新了?走,赶紧去围观

    前言 哦,不搞SQL了么,当然会继续,周末会继续更新,估计写完还得几十篇,但是我会坚持把SQL更新完毕,绝不会烂尾,后续很长一段时间没更新的话,不要想我,那说明我是学习新的技能去了,那就是学习英语,本 ...

  9. 问题记录:EntityFramework 一对一关系映射

    EntityFramework 一对一关系映射有很多种,比如主键作为关联,配置比较简单,示例代码: public class Teacher { public int Id { get; set; } ...

  10. EntityFramework.Extended 支持 MySql

    EntityFramework.Extended 默认不支持 MySql,需要配置如下代码: [DbConfigurationType(typeof(DbContextConfiguration))] ...

随机推荐

  1. php 内存分配新

    https://yq.aliyun.com/articles/38307 https://yq.aliyun.com/ziliao/132720 http://blog.liyiwei.cn/%E3% ...

  2. python中json库中的load、loads、dump、dumps的区别与用法

    一.json.dumps(i): json中的dumps方法是用来将特定格式的数据进行字符串化的操作,比如列表字典都可以进行字符串化操作然后写入json的file:而且如果是要写入json文件就必须要 ...

  3. Hadoop虚拟机的jdk版本和本地eclipse的版本不一致怎么办

    在本周学习Hadoop遇到了一个问题,困扰了半天,本人在安装Hadoop时是按照视频来的,结果发现Hadoop上的jdk版本和本地eclipse的版本不一致,导致本地的程序到处jar包传到虚拟机上运用 ...

  4. leetcode-78-子集(用bfs解决)

    题目描述: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1] ...

  5. 原 form 表单中 disabled 属性的元素不参与表单提交

    https://blog.csdn.net/benben683280/article/details/79173336

  6. mvvm小论(暂记)

    广州-PC26(34627) 2:09:44 在android 线程最后用 handler = new Handler();            updateThread = new Runnabl ...

  7. str_split 分隔中文出现乱码 替代函数

    function mbstringtoarray($str,$charset) { $strlen=mb_strlen($str); while($strlen){ $array[]=mb_subst ...

  8. 【html5】cookie、sessionStorage、localStorage

    第四条补充:      cookie中包含domain和path,所有向该域下该路径发送的请求头部都会包含这个cookie:      session浏览器关闭后消失,只能由最初给对象存储数据的页面访 ...

  9. JavaScript设计模式-7.单例模式

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. [中英对照]How PCI Express Works | PCIe工作原理

    How PCI Express Works | PCIe工作原理 PCI Express is a high-speed serial connection that operates more li ...