实体框架(EF6.X)是一种对象/关系映射器(O/R Mapping解决方案),一套支持开发面向数据的软件应用技术,采用特定域对象和关系数据形式使用数据,而不必考虑存储这些数据的基础数据库表和列,上层的用户端提供EntityClient、OjectContext及LinqToEntity支持

利用抽象化数据结构的方式,将每个数据库对象转换成应用程序对象(Entity),而数据字段都转换为属性(Property),关系则转换为结合属性(Association),使得数据库E/R模型完全的转成对象模型,EF中常见命名空间如下:

名称空间

说明

System.Data

主要名称空间,包含了与实体相关的异常类,如MappingException

System.Data.Common.CommandTrees

包含由.NET数据提供程序共享的类,DbProviderServices类是一个抽象类,必须有EF提供程序实现

System.Data.Entity.Design

包含由设计器用于创建EDM(实体数据模型)文件的类

System.Data.EntityClient

指定.NET数据提供程序访问EF的类,EntityConnection,EntityCommand,EntityReader

System.Data.Objects

包含用于查询和更新数据库类,OjectContext类封装与数据库的连接,用于创建、读取、更新和删除方法的网关,ObjectQuery类表示对存储器的一个查询

System.Data.Objects.DataClasses

包含实体需要的类和接口

Schema

数据逻辑层分为三方面:概念层结构(Conceptual Schema)、映射层结构(Mapping Schema )、存储层结构(Storage Schema )

l  概念层结构(Conceptual Schema)

CSDL将应用程序数据表示为概念模型中的一组实体和关系,定义了对象模型(Object Model),让上层应用可以面向对象方式访问数据,该层由CSDL(概念架构定义语言)定义

注意:

1)      所有实体都必须具有键,若数据库中未设置主键的表,那么系统会相应的推断实体的一个键

2)      仅包含外键、表示数据库中连接表之间的多对多关系的表在概念模型中没有对应的实体

l  映射层结构(Mapping Schema)

负责将上层的概念层结构及下层存储层机构中的成员结合在一起,以确认数据的来源与流向,该层由MSL(映射规范语言)把CSDL中的实体类型定义映射到SSDL上

l  存储层结构(Storage Schema )

负责与数据库管理系统DBMS中的数据表做实体对应,依不同数据库与数据结构,而显露出实体的数据结构体,和Provider一起,让数据可以输入正确的数据来源,或由正确的数据来源取出,该层由SSDL(存储架构定义语言)定义,描述了数据库表及其关系的结构

Entity Framework 主要是以Entity Model(EDM)为主体系架构如下:

Code-First

自从Entity Framework 4.1开始Code-First就是作为设计领域模型的主要方式,Code-First可以通过函数设计领域类与数据库中表的映射

当我们创建一个实体类且在通过dbset映射时,EF会将根据实体类中属性类型映射到数据库中的表中的相应类型

EntityFramework6.X之概述的更多相关文章

  1. MVC5 网站开发实践 概述

    目录 MVC5 网站开发实践  概述 MVC5 网站开发实践  1.建立项目 MVC5 网站开发实践  2.后台管理 MVC5 网站开发实践  2.1.管理员登陆 MVC5 网站开发实践 2.2.管理 ...

  2. 3万字长文概述:通俗易懂告诉你什么是.NET?什么是.NET Framework?什么是.NET Core?

    [转载]通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 什么是.NET?什么是.NET Framework?本文将从上往下,循序渐进的介绍一系列相关.NET的 ...

  3. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  4. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  5. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  6. .Net 大型分布式基础服务架构横向演变概述

    一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...

  7. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  8. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  9. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

随机推荐

  1. linux 压缩与解压

    tar -cvf test.tar test  ----将test文件夹打包成test.tar. # tar -xvf test.tar     ----将test.tar 进行拆解,从中抽取文件 # ...

  2. Snapman开发接口

    #include "stdafx.h" #include <Windows.h> #include <string> #include<time.h& ...

  3. CF #401 (Div. 2) C.Alyona and Spreadsheet (思维)

    题意:给你n行m列的数组,和k次的询问,问从l行到r行是否存在一个非递增的列 思路:看到这道题的数据量我们就知道直接暴力不可取,所以我们采用了预处理的方法,我们记录下来每一行的最长的非递减的列的开头的 ...

  4. 在程序加载过程中显示ProgressDialog 对话框

    private ProgressDialog mProgressDlg = null; @Override protected void onCreate(Bundle savedInstanceSt ...

  5. 【 js 基础 】 深浅拷贝

    underscore的源码中,有很多地方用到了 Array.prototype.slice() 方法,但是并没有传参,实际上只是为了返回数组的副本,例如 underscore 中 clone 的方法: ...

  6. javascript实现99乘法表

    for(var i=1; i<=9; i++) { for(var j=1; j<=i;j++) { document.write(i+"x"+i+"=&qu ...

  7. React服务器渲染最佳实践

    源码地址:https://github.com/skyFi/dva-starter React服务器渲染最佳实践 dva-starter 完美使用 dva react react-router,最好用 ...

  8. python3和python2的区别部分

    字典没有iteritems(),只有items() py2items()返回的是列表,iteritems()返回的是迭代器 py3items()返回的是迭代器

  9. [ext4]05 磁盘布局 - 延迟块组初始化

    延迟块组初始化,Ext4的新特性.如果对应的特性标识uninit_bg置位,那么inode bitmap和inode tables就不会初始化. 延迟块组初始化特性特性可以减少格式化耗时. 延迟块组初 ...

  10. PHP array_filter() 函数

    定义和用法 array_filter() 函数用回调函数过滤数组中的元素,如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组.如果原数组是 ...