ADO.NET Entity Framework 基本概述
时间过得很快转眼间VS已经2010版了,在4月12日将会正式发布VS 2010
ADOEF 做为.Net 4.0 中被微软推荐的ORM框架,相比.Net 3.5 sp1 已经得到了进一步的增强,使用它我们可以针对我们的业务对象来编程和创建数据访问,而不是原来的数据库操作,极大的减少了代码的编写和程序的维护开支,使代码更简洁美观。
相比原始的开发模型ADOEF拥有诸多的优点:
1.ADOEF模型中可以详细的描述数据库中的表关系,并映射到模型当中来。
2.相比Linq to SQL ,ADOEF 可以支持更多的数据库,并提供了统一的模型。可以建立多个概念模型来映射同一个数据库
3.可以方便灵活的更新ADOEF与数据库的映射,应对数据库的变化
4.提供了更强大的语法检查和验证模型。
实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。在EF中的实体数据模型(EDM)它提供以下方式用于查询 EDM 并返回对象:
1. LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查询在概念模型中定义的实体类型。
2. Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型中的实体并支持诸如继承和关系等 EDM 功能。
3. 查询生成器方法 --可以使用 LINQ 风格的查询方法构造 Entity SQL 查询。
模型的建立可以参考:ADO.NET Entity Framework 一个简单数据绑定例子
语法说明:
引用命名空间:
using System.Data.Objects; using NorthwindModel; //EF模型
首先我们查询所有的Customer,代码和Linq To SQL中的十分相似。
using (NorthwindEntities ctx = new NorthwindEntities()) //建立edm{foreach (var customer in ctx.Customers) //获得实体集合{Console.WriteLine(customer.CustomerID);}}
Entity SQL Language 查询某个Customer,
Customer alfki = ctx.Customers.Where("it.CustomerID = 'ALFKI'").First();
"it.CustomerID = 'ALFKI'" 表示查询条件语句,该语句看着又像C#代码又像SQL,被成为Entity SQL Language。
Linq To Entities,需要引用System.Linq命名空间。
方法1
Customer alfki = ctx.Customers.First<Customer>(it => it.CustomerID == "ALFKI");
方法2
Customer alfki = (from c in ctx.Customerswhere c.CustomerID == "ALFKIA"select c).First();
在Entity Framework中进行一对多的查询很简单,如果建立了数据库关系,便可以直接使用。
但是值得注意的是Entity Framework默认是Lazy Load,即关联数据在需要的时候才加载。如果直接查询该Customer关联的orders,查询不到结果。
Customer alfki = ctx.Customers.First<Customer>(it => it.CustomerID == "ALFKI"); //获得客户
foreach (var order in alfki.Orders) //遍历客户的订单{Console.WriteLine(order.OrderID);}
需要在使用orders之前调用 alfki.Orders.Load(), 再次运行便可以得到正确的结果。
参考文章:
http://msdn.microsoft.com/zh-cn/library/bb399572.aspx
http://www.cnblogs.com/blusehuang/archive/2007/10/10/920020.html
ADO.NET Entity Framework 基本概述相关推荐
- ADO.NET Entity Framework 学习(1) [ZT]
前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...
- ADO.NET Entity Framework 简介
一直对EF都是一知半解的,没有系统的了解过EF有什么样的功能,有什么具体的好处.在接下来的文章中会详细介绍EF.以下是参考MSDN上的文章,翻译并加以自己的理解得出的. ADO.NET Entity ...
- 一处 ADO.NET Entity Framework 的逻辑BUG
这几天开始接触ADO.NET Entity Framework,突然发现一处奇怪的BUG. 首先来看这样一个目录结构: 我将EDM模型存入了一个名为"A"的目录中,然后编辑模型,设 ...
- 自定义Unity对象生命周期管理集成ADO.NET Entity Framework
在Unity中,从Unity 取得的实例为 Transient.如果你希望使用多线程方式,就需要在组成时使用lifecycle参数,这时候取出的组件就不再是同一个了.在Unity IOC中,它支持我们 ...
- ADO.NET Entity Framework Beta2(五)/快速入门(实体框架)
This quickstart illustrates a series of tasks that support the topics in Getting Started with the En ...
- ADO.NET Entity Framework 入门示例向导(附Demo程序下载)
ADO.NET Entity Framework 入门示例向导(附Demo程序下载) ADO.NET Entity Framework 是.Net Framework 3.5 SP1 引入的实体框架, ...
- SQLite的ADO.NET Provider支持ADO.NET Entity Framework
Ado.net 官方博客 http://blogs.msdn.com/adonet/archive/2008/09/06/sqlite-s-ado-net-provider-supports-the- ...
- ADO.NET Entity Framework
微软推出ADO.NET Entity Framework,即下一代的ADO.NET.它是比Linq To SQL更加强大的ORM,让开发人员只需要着眼于领域对象模型的开发,而不需要考虑它们是如何与关系 ...
- ADO.NET Entity Framework -Code Fisrt 开篇(一)
ADO.NET Entity Framework 是微软的一套实体映射框架.发布EF4.1(Entity Framework )时,又提出了代码先行的设计理念(the code comes first ...
最新文章
- 需求分析挑战之旅——疯狂的订餐系统
- Python基础之:Python中的内部对象
- ❤️六W字《计算机基础知识》(八)(建议收藏)❤️
- linux MISC 驱动模型分析
- 【UI设计师必备】可临摹精美的APP UI Kit模板
- ubuntu下配置php环境
- jquery 添加可操作,编辑不可操作
- 省市级联mysql数据_全国省市区县三级级联数据
- 课程设计 计算机公共基础,基于Moodle的大学计算机公共基础课程设计
- 物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平...
- [原]基因组变异检测概述
- 中国石油大学《微观经济学》在线考试
- Spring Boot整合MyBatis框架(完整的注解版)
- C语言:从键盘输入一个整数,分别输出它的个位数、十位数、百位数.....
- 【LOJ6515】贪玩蓝月
- 2020年机修钳工(技师)考试题库及机修钳工(技师)免费试题
- 程序设计方法与技术——C语言 程序设计概述
- Java:抽象成类找对象
- 2021最新某团_token参数分析、可获取商家列表、商家详情数据
- cefsharp 带cookie打开网址
热门文章
- LiveQing视频流媒体开放平台利用 webpack 打包压缩后端代码
- 数据结构--百度百科
- hibernate对象关系实现(二)一对一
- 有关android 应用的plugin框架调研
- SSIS教程SQlServer2008R2 (5) 添加错误流重定向
- SQL Server 数据库的整理优化的基本过程(二)
- STM32 电机教程 8 - 步进电机开环电流控制
- arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1
- 【DIY】arduino播放音乐方案——TMRpcm
- html设置无效字符,使用innerHTML属性向head中插入字符时报“无法设置 innerHTML 属性。 该操作的目标元件无效”的错误...