ADO.NET-EF:ADO.NET Entity Framework 百科
ylbtech-ADO.NET-EF:ADO.NET Entity Framework 百科 |
ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来。
1.返回顶部 |
- 软件名称:Entity Framework
- 开发商:Microsoft
- 软件平台:.NET Framework
- 软件版本:6.1.3
- 更新时间:2015/03/10
- 软件语言:C#
- 软件授权:Apache许可证
2.返回顶部 |
简介
ADO.NET Entity Framework 建模
带有有效载荷的多对多关系建模
自引用关系建模
跨表实体建模
多实体建模
多表派生建模
表分割建模
版本信息
版本
|
支持.NET
|
发布情况
|
备注
|
Entity Framework 3.5
|
2.0+
|
包含于.NET 3.5中
|
支持EDMX生成,通过扩展可支持POCO类的生成
|
Entity Framework 4.0
|
4.0+
|
包含于.NET 4.0中
|
|
Entity Framework 4.X
|
4.0+
|
可通过NuGet获取
|
支持Database First、Model First、Code First三种生
成模式
|
Entity Framework 4.5
|
4.5+
|
集成于.NET 4.5中
|
|
Entity Framework 5.X
|
4.5+
|
可通过NuGet获取
|
支持枚举字段,性能有较大提升,支持.NET 4.0的版本
为Entity Framework 4.4
|
背景

学习 SQL 指令,因此在信息业中有很多人都在研究如何将程序设计模型和数据库集成在一起,对象关系对应 (Object-Relational Mapping) 的技术就是由此而生,像Hibernate或NHibernate都是这个技术下的产物,而微软虽然有了ADO.NET这 个数据访问的利器,但却没有像NHibernate这样的对象对应工具,因此微软在.NET Framework 2.0发展时期,就提出了一个ObjectSpace的概念,ObjectSpace可以让应用程序可以用完全对象化的方法连接与访问数据库,其技术概念 与NHibernate相当类似,然而ObjectSpace工程相当大,在.NET Framework 2.0完成时仍无法全部完成,因此微软将ObjectSpace纳入下一版本的.NET Framework中,并且再加上一个设计的工具(Designer),构成了 ADO.NET Entity Framework。
架构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version= "1.0" encoding= "utf-8" ?> <EntityContainer Name= "EmployeesContext" > <EntitySet Name= "Employees" EntityType= "Employees.Employees" /> </EntityContainer> <EntityType Name= "Employees" > <Key> <PropertyRef Name= "EmployeeId" /> </Key> <Property Name= "EmployeeId" Type= "Guid" Nullable= "false" /> <Property Name= "LastName" Type= "String" Nullable= "false" /> <Property Name= "FirstName" Type= "String" Nullable= "false" /> <Property Name= "Email" Type= "String" Nullable= "false" /> </EntityType> </Schema> |
1
2
3
4
5
6
7
8
9
10
11
|
<?xml version= "1.0" encoding= "utf-8" ?> <Mapping Space= "C-S" xmlns= "urn:schemas-microsoft-com:windows:storage:mapping:CS" > <EntityContainerMapping StorageEntityContainer= "dbo" CdmEntityContainer= "EmployeesContext" > <EntitySetMapping Name= "Employees" StoreEntitySet= "Employees" TypeName= "Employees.Employees" > <ScalarProperty Name= "EmployeeId" ColumnName= "EmployeeId" /> <ScalarProperty Name= "LastName" ColumnName= "LastName" /> <ScalarProperty Name= "FirstName" ColumnName= "FirstName" /> <ScalarProperty Name= "Email" ColumnName= "Email" /> </EntitySetMapping> </EntityContainerMapping> </Mapping> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
?xml version= "1.0" encoding= "utf-8" ?> <Schema Namespace= "Employees.Store" Alias= "Self" Provider= "System.Data.SqlClient" ProviderManifestToken= "2005" <EntityContainer Name= "dbo" > <EntitySet Name= "Employees" EntityType= "Employees.Store.Employees" /> </EntityContainer> <EntityType Name= "Employees" > <Key> <PropertyRef Name= "EmployeeId" /> </Key> <Property Name= "EmployeeId" Type= "uniqueidentifier" Nullable= "false" /> <Property Name= "LastName" Type= "nvarchar" Nullable= "false" MaxLength= "50" /> <Property Name= "FirstName" Type= "nvarchar" Nullable= "false" /> <Property Name= "Email" Type= "nvarchar" Nullable= "false" /> </EntityType> </Schema> |
用户端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// Initialize the EntityConnectionStringBuilder. EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); //Set the provider name. entityBuilder.Provider = providerName; // Set the provider-specific connection string. entityBuilder.ProviderConnectionString = providerString; // Set the Metadata location. entityBuilder.Metadata = @"res: //*/AdventureWorksModel.csdl| res: //*/AdventureWorksModel.ssdl| res: //*/AdventureWorksModel.msl"; Console.WriteLine(entityBuilder.ToString()); using (EntityConnection conn = new EntityConnection(entityBuilder.ToString())) { conn.Open(); Console.WriteLine( "Just testing the connection." ); conn.Close(); } |
1
2
3
4
5
|
// Get the contacts with the specified name. ObjectQuery<Contact> contactQuery = context.Contact .Where( "it.LastName = @ln AND it.FirstName = @fn" , new ObjectParameter( "ln" , lastName), new ObjectParameter( "fn" , firstName)); |
1
2
3
4
5
6
|
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities()) { ObjectQuery<Product> products = AWEntities.Product; IQueryable<Product> productNames = from p in products select p; |
开发工具
派生服务

微软特别针对了网络上各种不同的应用程序 (例如 AJAX, Silverlight, Mashup 应用程序) 开发了一个基于 ADO.NET Entity Framework 之上的服务,称为 ADO.NET Data Services (项目代号为 Astoria),并与 ADO.NET Entity Framework 一起包装在 .NET Framework 3.5 Service Pack 1 中发表。
支持厂商
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ADO.NET-EF:ADO.NET Entity Framework 百科的更多相关文章
- ADO.NET、NHibernate和Entity Framework的比较
---原文地址:http://www.xuebuyuan.com/2162973.html 1,ADO.NET属于传统的数据访问工具,开发的时候需要我们手动去编写操作数据库的各种操作,当然性能也就不用 ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- [EF] 如何在 Entity Framework 中以手动方式设定 Code First 的 Migration 作业
Entity Framework (简称 EF) 发展到现在, 版本已经进入 6.1.0, 距离我写的「在 VS2013 以 Code First 方式建立 EF 资料库」这篇文章已有半年的时间.如果 ...
- 【EF Core】Entity Framework Core 批处理语句
在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请 ...
- Entity Framework (EF) Core工具创建一对多和多对多的关系
一. EntirtyFramework(EF)简介 EntirtyFramework框架是一个轻量级的可扩展版本的流行实体框架数据访问技术,微软官方提供的ORM工具让开发人员节省数据库访问的代码时间 ...
- Entity Framework入门系列(1)-扯淡开篇
这是我在Cnblogs上的第一个系列,但愿能坚持下去: 惯例索引 Entity Framework入门系列(1)-开篇兼索引: Entity Framework入门系列(2)-初试Code First ...
- Code First :使用Entity. Framework编程(1) ----转发 收藏
这个是在学习EF CodeFirst时发现的,对于初学者还是不错的.果断转发,方便自己以后查阅和学习. 对于学习Code First 这个教程讲解的还是很详细. 第一章:欢迎来到Code First ...
- Entity Framework 学习
Entity Framework 学习初级篇1--EF基本概况 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry. ...
- Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)
很久没有写博客了,一些读者也经常问问一些问题,不过最近我确实也很忙,除了处理日常工作外,平常主要的时间也花在了继续研究微软的实体框架(EntityFramework)方面了.这个实体框架加入了很多特性 ...
随机推荐
- Sql Server 之游标
一般来说,我们通过SQL一般是面向集合进行数据操作,但是游标提供给我们更加强大的功能可以对数据集合进行逐行遍历有选择性的操作处理.当然游标也有其不可避免的缺陷就是:低效和复杂.所以一般正常的操作处理不 ...
- Java中 Json的使用
转自:http://huyan.couplecoders.tech/%E5%BC%80%E5%8F%91%E8%80%85%E6%89%8B%E5%86%8C/2018/11/02/Java%E4%B ...
- FZUOJ-2273 Triangles
Problem 2273 Triangles Accept: 109 Submit: 360 Time Limit: 1000 mSec Memory Limit : 262144 KB ...
- java 标识接口的作用
标识接口的作用 标识接口是没有任何方法和属性的接口.标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型. 标接口在Java语言中有一些很著名的应用,例如我们常用的Arra ...
- 模板 - 可持久化无旋Treap
空间消耗非常玄学,有多大开多大就完事了.其实是因为单次操作可能会有数次Merge和Split操作,按照下面的版本的话Merge和Split都进行复制,所以一次操作可能复制了4个版本. 四个函数式查询, ...
- 洛谷 - P2146 - 软件包管理器 - 重链剖分
https://www.luogu.org/problem/P2146 继续重链剖分. 这里好像很好懂,每次安装软件就区间改值赋值整个路径是1,然后比较前后的sum值变化就可以了.事实上后一次的sum ...
- Vue+elementui 实现复杂表头和动态增加列的二维表格
先上完成的效果图:列是根据查询结果增加的 数据格式: 表头的数据取出: data.data.forEach(element => { this.thead.push({ 品名: element. ...
- IO流详解及测试代码
IO流 (1)IO用于在设备间进行数据传输的操作 (2)分类: A:流向 输入流 读取数据 输出流 写出数据 B:数据类型 字节流 字节输入流 ...
- SVG 学学就会了。
SVG 随便学学就会了 这两天闲来没事把 Echart 换成 Rechart 感觉世界都清爽了.因为 rechart 使用 svg 来渲染,所以顺带学了下 SVG 感觉很轻松哦. 概念 SVG 是 w ...
- paste - 合并文件各行
总览 (SYNOPSIS) ../src/paste [OPTION]... [FILE]... 描述 (DESCRIPTION) 连续 依次 从 各个 文件 FILE 中 读取 一行 然后 合并成 ...