EntityFramework(1)

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打开看一看。

时间: 2024-10-27 02:50:53

EntityFramework(1)的相关文章

EntityFramework 4使用存储过程分页

1 CREATE PROC usp_OrgPage_SQL 2 @pageIndex INT, 3 @pageSize INT, 4 @totalCount INT OUTPUT 5 AS 6 BEGIN 7 SET @totalCount = (SELECT COUNT(*) FROM dbo.Organization) 8 SELECT * FROM 9 ( 10 SELECT *,ROW_NUMBER() OVER(ORDER BY OrganizationID DESC)AS row F

EntityFramework 简单入个门

任何一个和数据相关的系统里,数据持久化都是一个不容忽视的问题. 一直以来,Java 平台出了很多 NB 的 ORM 框架,Hibernate.MyBatis等等..NET 平台上,ORM 框架这一块一直没有一个能吊到让几乎所有开发人员改掉以拼写 SQL 语句访问数据库的习惯. 实际上,在 .NET 平台上,也层出不穷的出现了很多类似的玩意儿,比如Nhibernate.Ibatis,还有微软的亲儿子--坑爹的 LinqToSQL.虽然这么多框架,但是真的没见过 .NET 平台的 ORM 框架能像

EntityFramework Core 1.1有哪些新特性呢?

前言 在项目中用到EntityFramework Core都是现学现用,及时发现问题及时测试,私下利用休闲时间也会去学习其他未曾遇到过或者用过的特性,本节我们来讲讲在EntityFramework Core 1.1中出现了哪些新特性供我们使用. EntityFramework Core 1.1新特性探讨 DbSet.Find 在EF 6.x中也有此方法的实现,在EF Core 1.1中也同样对此方法进行了实现,为什么要拿出来讲呢,当然也有其道理,我们一起来看看.在         public 

EntityFramework Core Raw SQL

EntityFramework Core Raw SQL 基础查询(执行SQL和存储过程) 啥也不说了,拿起键盘就是干,如下:     public class HomeController : Controller     {        private IBlogRepository _blogRepository;        public HomeController(IBlogRepository blogRepository)         {             _blo

EntityFramework 学习 一 并发

EntityFramework默认支持乐观并发 乐观并发中,实体加载后如果都没发生变化,ef保存该实体 首先,我们需要一个rowversion列为了控制student实体的并发问题,rowversion的数据类型为字节数组,rowversion像是自增id, rowversion的值在数据库当中自动添加和更新 ef将在where子句中添加rowversion列,当你进行更新操作,如果rowversion的值与where子句中的值不一致,则抛出异常 Student student1WithUser

EntityFramework Core Raw Query再叙注意事项后续

前言 话说通过EntityFramwork Core进行原始查询又出问题,且听我娓娓道来. EntityFramework Core Raw Query后续 当我们进行复杂查询时我们会通过原始查询来进行,我们定义如下ViewModel public class BlogViewModel { public int Id { get; set; } public string Name { get; set; } public string Url { get; set; } public str

entityframework.extended安装

在开始学习EF过程中,发现EF的批量更新和批量删除比较缓慢,在网上搜索到entityframework.extended 插件很好的解决了这个问题,故此想下载安装学习一下,下面是自己再安装过程中遇到的问题以及解决方法. 一.entityframework.extended 安装步骤: 出现错误提示如下: 二.解决问题方法 1.找到DNS服务器地址 再网上经过一番查找好,这篇博客给予了我启发http://blog.csdn.net/bklydxz/article/details/50967498,

EntityFramework、Dapper vs 草根框架性能

EntityFramework.Dapper vs 草根框架性能 扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 EntityFramework 和 NHibernate,还有一些出自草根之手的,如 Chloe.ORM.各式各样,层出不穷.试问,为何要重复造轮子?很简单,咱来自火星,目前地球上还没一款轮子适合咱这辆火星车~ 为加深对各个 ORM 框架的了解,同时也想看看咱自己的框架性能如何,也可以让对 Chloe 感兴趣

Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)

面向接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理. 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下推崇最高的两种ORM工具. 1.EntityFramework是微软出的根正苗红的.netd的ORM工具,直接在Vs工具和Mvc框架中集成了,默认生成的项目就是使用EntityFramework的;微软也一直都在维护更新升级,最新版本最新版本都在EF7了.也迁移到了最新的.net Core平台了

EntityFramework学习

本文档主要介绍.NET开发中两项新技术,.NET平台语言中的语言集成查询技术 - LINQ,与ADO.NET中新增的数据访问层设计技术ADO.NET Entity Framework.ADO.NET的LINQ to Entity部分以LINQ为基础,为了完整性首先介绍LINQ技术. 预备知识 LINQ技术 LINQ是.NET 3.5中新增的一种技术,这个技术扩展了.NET平台上的编程语言,使其可以更加方便的进行数据查询,单纯的LINQ技术主要完成对集合对象(如System.Collection下