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
|
背景
ADO.NET Entity Framework 架构图学习 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 productsselect p; |
开发工具
派生服务
ADO.NET Entity Model Designer微软特别针对了网络上各种不同的应用程序 (例如 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)方面了.这个实体框架加入了很多特性 ...
随机推荐
- [Python3 填坑] 006 “杠零”,空字符的使用
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 \0 是空字符,输出时看不到它,但它占 1 个字符的长度 2.2 \0 "遇八进制失效" 2.3 \0 与 '' 不 ...
- HDU-1847 Good Luck in CET-4 Everybody! (博弈+找规律)
大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...
- 14、前端知识点--Vue生命周期浅析
vue生命周期 每个Vue实例或组件从创建到显示再到废弃的过程就是vue的生命周期.很多时候我们希望能在这个过程中执行一些操作,于是就有了生命周期钩子. 生命周期钩子函数允许我们在实例不同阶段执行各种 ...
- vue.js(18)--父组件向子组件传值
子组件是不能直接使用父组件中数据的,需要进行属性绑定(v-bind:自定义属性名=“msg”),绑定后需要在子组件中使用props[‘自定义属性名’]数组来定义父组件的自定义名称. props数组中的 ...
- lLinux的常用命令
命令基本格式: 命令提示符:[root@localhost ~]# root 代表当前的登录用户(linux当中管理员账号是root) @ 无实际意义 localhost ...
- Docker实战部署应用——MySQL5.7
MySQL 部署 拉取MySQL镜像 拉取命令: docker pull mysql:5.7 查看镜像 docker images 创建 MySQL 容器 docker run -id --name= ...
- Kintex 7五兄弟
基KC705E 增强版 基于FMC接口的Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 接口卡(136) 本板卡是Xilinx公司芯片V5系列芯片设计信号处理板卡.由一 ...
- Ansible自动化运维工具(2)
(5) ping模块 检测客户端机器的连通性 ansible webserver -m ping (6) group模块 创建用户的附加组. ansible webserver -m group -a ...
- MYSQL学习笔记——数据库范式及MYSQL优化整体思路
一.数据库范式 为了建立冗余较小.结构合理的 ...
- 随笔2 AbstractMap<K,V>
上一篇写了Map接口的源码分析,这一篇写一下Map接口的一个实现类AbstractMap,从名字就可以看出这是一个抽象类,提供了Map接口的骨架实现,为我们实现Map接口的时候提供了很大的便利.在这里 ...
