实体框架(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. 老李分享:JDK,JRE,JVM区别与联系

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  2. 老李分享:《Linux Shell脚本攻略》 要点(六)

    老李分享:<Linux Shell脚本攻略> 要点(六)   1.打印网络接口列表 [root@localhost touch_more]# ifconfig | cut -c-10 | ...

  3. hdu 3032 Nim or not Nim? (sg函数打表找规律)

    题意:有N堆石子,每堆有s[i]个,Alice和Bob两人轮流取石子,可以从一堆中取任意多的石子,也可以把一堆石子分成两小堆 Alice先取,问谁能获胜 思路:首先观察这道题的数据范围  1 ≤ N ...

  4. table切换

    // 自己加载正确路径的jQ <!doctype html> <html><head><meta charset="utf-8">& ...

  5. scss的初级学习随笔小计

    $white: #fff;$three: #333;$six: #666;$nine: #999;$red: #fff;$orange: #f63;$yellow: #fc0;$opcity: rgb ...

  6. c++标准库容器【转】

    C++最原始的容器之一是数组.数组的特点有: 1.大小固定 2.单独存在的数组建立在栈上,作为对象成员存在的数组建立在堆上还是栈上则要看作为宿主对象是被建立在堆上还是栈上.栈空间是有限的,所以如果数组 ...

  7. Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)

    上一篇:Mac OS平台下应用程序安装包制作工具Packages的使用介绍 补充说明 上一篇文章中介绍了如何使用Packages如何创建mac下的安装包.但是这样制作出来的安装包只能安装到系统的文件路 ...

  8. yii2.0套用模板问题

    载入视图 在控制器中: $this->render(); 会加载布局 $this->renderPartial(); 不会加载布局(也不能载入框架自带的jquery等) Yii2 选择布局 ...

  9. error C2664: “UINT GetDriveTypeW(LPCWSTR)”: 无法将参数 1 从“char [5]”转换为“LPCWSTR”

    解决方法:右击项目选择属性--->配置属性--->常规,将字符集改为“使用多字节字符符集”,应用确定即可. 来自为知笔记(Wiz)

  10. Android Gradle 指定 Module 打包

    Android Gradle 指定 Module 打包 项目中有许多的可以直接独立运行的 Module ,如何在 Gradle 中将签名文件配置好了,那么就不需要普通的手动点击 Generate Si ...