- 浏览: 1005042 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
自从Entity Framework(EF)第一版本的发布以来,我们陆续从用户那里得到了许多高质量的反馈。根据这些反馈,在.NET 4中,我们为Entity Framework添加了许多新的功能和改进,下面我们就来一窥Entity Framework 4中的新特性。
外键支持(Foreign Keys)
Entity Framework添加了对外键的支持。利用外键关联,您现在可以将外键属性包含在实体里,这样做可以简化诸如数据绑定、n-tier开发等关键方案的开发。您可以直接使用外键属性设置实体之间的关系:
using (BlogEntities ctx = new BlogEntities()) {
Post myPost = new Post {
PostID = 102,
PostName = "Post Title",
CreatedDate = DateTime.Now,
PostContent = "Post Content",
BlogID = 11
};
ctx.Posts.AddObject(myPost);
ctx.SaveChanges();
}
在这个例子里,即使BlogID == 11的这个Blog对象从未被装载,我们也可以直接把新建的myPost对象与这个Blog对象之间的关系通过外键关联起来。
延迟加载支持(Lazy Loading)
现在Entity Framework支持延迟加载。一个新的模型在VS2010中被创建的同时,提供延迟加载功能的实体也被生成出来。默认情况下这个功能是开启的,一个查 询操作返回的实体对象并不会被马上加载,而是会在实际被使用的时候加载。举例来说,延迟加载意味着下面这个代码段里,每个Post对象会在实际被调用来打 印PostName属性的时候被加载。
using (var ctx = new BlogEntities()) {
foreach (var b in ctx.Blogs) {
Console.WriteLine(b.BlogName);
//请注意我们并未主动装载当前blog的posts
//EF会为我们延迟加载
foreach (var p in b.Posts)
Console.WriteLine(p.PostName);
}
}
简单传统CLR对象(Plain Old CLR Object)支持
EF4为实体提供了简单传统CLR对象(Plain Old CLR Object / POCO)支持。您的实体对象可以独立于EF存在,由此EF更好地支持了测试驱动开发(test-driven development)和领域驱动设计(domain-driven design)。同时,EF仍旧可以帮助跟踪POCO实体的变化,允许延迟加载,也会自动修正对导航属性(navigation properties)和外键的改动。您可以在ADO.NET的博客 上找到更多关于POCO支持的信息。
文本模板转换工具集(Text Template Transformation Toolkit)代码生成
在Entity Framework的初始版本中,您无法随心所欲地配置EF的代码生成,而且代码生成的配置也没有集成到Visual Studio中。新版本的Entity Framework利用文本模板转换工具集(Text Template Transformation Toolkit / T4)不但简化了代码生成的个性化配置,也使得用户对代码生成有更加灵活和强大的控制。Visual Studio集成了这一功能,您可以在Entity Framework设计器的空白处右击,选择“Add Code Generation Item…”。随后您可以获得内置的代码生成模板。
当然,您并不局限于这个随着VS2010一起发布的默认代码生成策略,您现在可以编写自己的 T4 模板 或者修改默认模板,使之生成您想要的代码。
更好的N层设计(N-Tier)支持
我们经常需要分离数据层、业务逻辑层、交互层,来确保数据的完整性并提高每层的可维护性。这时候我们要用到N-Tier设计。Entity Framework小组收到了一些改进N-Tier支持的要求,他们采纳了这一建议,增强了API以支持N-Tier设计。除此之外,EF小组实现了一个 代码生成模板,能够生成内置N-Tier特性(如更改追踪)的对象。这个模板生成的实体,本质上是一系列的CLR类,它们带有Windows Communication Foundation(WCF)序列化属性,因此它们可以与WCF服务一同使用。
改进SQL语句的生成
我们持续不断地努力改进生成的SQL语句的可读性和性能。在EF4中,针对使用Entity Framework进行的查询,在生成SQL语句的部分我们作出了大量的简化和改进。其中之一是我们去掉了一些多余的join语句。另一个改进是对于 WHERE语句的字符串参数使用数据库的通配符。例如下面的LINQ查询语句会被翻译成一个使用WHERE子句和LIKE语句,并使用‘%’通配符在所有 的Blogs里搜索BlogName属性以‘Visual Studio’开头的Blog。
var query = from b in ctx.Blogs
where b.BlogName.StartsWith("Visual Studio")
select b;
这些改动看起来好像很小,但改进的SQL生成能够使得查询执行得更快,减轻SQL Servers和网络的负载。
增强对存储过程(Stored Procedure)的支持
许多数据库都利用存储过程来执行自定义的SQL过程。Entity Framework允许您在实体模型中创建一个函数,从中调用一个存储过程。您只需要通过函数导入(Function Import)功能就可以将存储过程导入为一个函数。在新版本中,函数导入功能可以检测到存储过程返回的数据列,并为这些列创建一个复杂类型。当然,当存 储过程定义改变后,已有的复杂类型也可以被更新。下面这个截屏显示的是Entity Framework设计器的存储过程向导,引导您一步步将存储过程导入为函数:
Entity Framework 4提供的这些新特性,目的是提高程序员的工作效率。您可以在项目论坛 上与团队分享您的想法和意见,在Entity Framework团队博客 及设计博客 上与他们联系,也请关注Channel 9上的视频和screencasts 。
最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品。不过,据说在.Net4.0中,微软将推荐使用此框 架,并会有所改善。而且,现在基本上所有数据库均提供了对EF的支持。因此,为以后做技术准备可以学习研究以下。但是,我个人觉得就目前来说,在实际项目 慎用此框架。
下面简单的介绍以下这个EF。
在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品。用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储架构编程)来创建数 据访问应用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。Entity Framework 应用程序有以下优点:
- 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。
- 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。
- 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。
- 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。
- 多个概念性模型可以映射到同一个存储架构。
- 语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。
实体框架Entity Framework 是 ADO.NET 中的一组支持开发面向数据的软件应用程序的技术。在EF中的实体数据模型(EDM)由以下三种模型和具有相应文件扩展名的映射文件进行定义。
- 概念架构定义语言文件 (.csdl) -- 定义概念模型。
- 存储架构定义语言文件 (.ssdl) -- 定义存储模型(又称逻辑模型)。
- 映射规范语言文件 (.msl) -- 定义存储模型与概念模型之间的映射。
实体框架 使用这些基于 XML 的模型和映射文件将对概念模型中的实体和关系的创建、读取、更新和删除操作转换为数据源中的等效操作。EDM 甚至支持将概念模型中的实体映射到数据源中的存储过程。它提供以下方式用于查询 EDM 并返回对象:
- LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查询在概念模型中定义的实体类型。
- Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型中的实体并支持诸如继承和关系等 EDM 功能。
- 查询生成器方法 --可以使用 LINQ 风格的查询方法构造 Entity SQL 查询。
下图演示用于访问数据的实体框架体系结构:
下面,来学习EF的基本使用方法。软件环境::
- Visual Studio 2008 +SP1
- SQL Server2005/2008
首先,建立一个名为“EFProject”的解决方案,然后添加一个名为“EFModel”的类库项目。如下图所示。
接着,在EFModel项目中,添加“ADO.NET Entity Data Model”项目,如下图所示:
名称取为“NorthWindEF.edmx”,然后点击“添加”。然后,在后面的步骤中,数据库选择“NorthWind”后,在选择影射对象是,把表、试图、存储过程全部都选上,其他的均保存默认的即可。最终生成的结果如下图所示。
好了,数据模型生成完毕。
最后,谈谈我认为的一些缺点:
- Edmx包含了所有对象的csdl,ssdl,msl文件,过于庞大,如果要手动修改这个文件,一不小心,眼睛看花了,就改错了。(和数据集一样的毛病)。
- 目前EF支持表、试图、存储过程,其他的对象不支持,而且对使用存储过程有很多限制(目前有EFExtension提供了更多对象的支持)。
- 除了MS SQL Server可直接提供这种可视化的设计界面外,其他的数据库目前还没有提供可视化设计界面(但可以自己来实现,后面介绍)。
- 性能问题。(网上看到有说比ADO.Net慢700百,又有人说比ADO.net快的,具体情况我还没测试过, 但我觉得像这个些类型的框架,性能肯定是比上原生态的ADO.net慢)
好了,接下来,学习以下简单的各种操作。
发表评论
-
C# LINQ to SQL
2017-07-28 12:48 6381、Concat(连接不同的集合不会自动过滤相同项。会延迟计 ... -
基于 EntityFramework 的数据库主从读写分离服务插件
2017-03-08 15:06 11351. 版本信息和源码 1.1 版本信息 v1.01 be ... -
EF6(CodeFirst)+MySql开发
2017-01-06 14:08 1467如题,本文是使用EntityFramework6框架的感悟( ... -
<Entity Framework> - 直接执行数据库命令
2016-08-10 15:00 1510使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库 ... -
EntityFramework执行SQL语句
2016-08-10 14:58 985在EF中执行Sql语句。 Insert Code: ... -
EntityFramework 执行SQL语句进行参数化查询代码示例
2016-08-10 14:59 1889在我们用EntityFramework时,一般情况下我们是要 ... -
Entity Framework 学习中级篇—使EF支持Oracle9i
2011-07-05 16:57 2959从Code MSDN上下载下来的EFOracleProvide ... -
Entity Framework 学习中级篇—EF支持复杂类型的实现
2011-07-05 16:56 12657http://www.cnblogs.com/xray20 ... -
Entity Framework 学习初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateMa
2011-07-05 16:55 6903本节,简单的介绍EF中的 ObjectContext ... -
Entity Framework 学习高级篇—改善EF代码的方法
2011-07-05 16:39 10110本节,我们将介绍一些改善EF代码的相关方法,如NoTrac ... -
Entity Framework 学习总结之十一:POCO
2011-06-30 11:24 12058POCO Entity Framework ... -
Entity Framework 学习总结之十:加载相关对象
2011-06-30 11:23 3791加载相关对象 实体类型可以定义在数据模型中表 ... -
Entity Framework 学习总结之九:LinqToEntities
2011-06-30 11:22 1611介绍 LINQ to Entities ... -
Entity Framework 学习总结之八:EntitySQL 复杂查询及函数
2011-06-30 11:21 2911复杂查询及函数 外键 Entity ... -
Entity Framework 学习总结之七:EntitySQL 基本查询
2011-06-30 11:20 2087Entity SQL 基本查询 SW ... -
Entity Framework 学习总结之六:EntitySQL 介绍入门
2011-06-30 11:19 1994Entity SQL Language 简介 ... -
Entity Framework 学习总结之五:EntityClient
2011-06-30 11:18 3493System.Data.EntityClient E ... -
Entity Framework 学习总结之四:对象服务介绍使用
2011-06-30 11:18 3050System.Data.Objects (System ...
相关推荐
Entity Framework学习初中高级篇-博客园cnblogs.rar
Summary Entity Framework Core in Action teaches you how to access and update relational data from .NET applications. Following the crystal-clear explanations, real-world examples, and around 100 ...
entity framework 4 in action - source code
Entity Framework 6 (EF6) is a tried and tested object-relational mapper (O/RM) for .NET with many years of feature development and stabilization.
EntityFramework领域驱动模型-陈晴阳大哥的文章.pdf
Reading and storing data is a core part of any application, and .NET developers ...Entity Framework Core in Action teaches developers how to add database functionality to .NET applications with EF Core.
Entity Framework Core Cookbook - Second Edition by Ricardo Peres English | 9 Nov. 2016 | ISBN: 1785883305 | 340 Pages | MOBI/EPUB/PDF+Code Files | 6.2 MB Entity Framework is a highly recommended ...
Entity Framework 学习资料,值得下载的资源
Entity Framework试水系列-博客园cnblogs.rar
Entity Framework provides a model-based system that makes data access effortless for developers by freeing you from writing similar data access code for all of your domain models. Mastering Entity ...
Understand the core concepts of Entity Framework Core, as well process models for existing databases (reverse engineering) and the generation of database schemas from object models (forward ...
Entity Framework 学习(中文资料初中高级共14篇) pdf格式
替换C:\Users\xxxxx\.nuget\packages\z.entityframework.extensions.efcore\2.1.49\lib\netstandard2.0下的Z.EntityFramework.Extensions.EFCore.dll。适用于.net core的ef,解除了1个月使用的限制。
Entity Framework 学习教程,chm格式,方便离线阅读,需要学习实体框架技术的同仁,可以下载来学习啦
Z.EntityFramework.Extensions 破解 注册机,详细破解方法
EntityFramework 执行过程分析工具,可完美看到执行的语句,支持EFCore
c# Entity Framework is an object-relational mapper (O/RM) that enables .NET developers to work with a database using .NET objects. It eliminates the need for most of the data-access code that ...
Entity Framework 6 Recipes Entity Framework 6 Recipes
如果使用Entity Framework也用了Z.EntityFramework.Plus.EF6且同时使用Entity Framework Profiler或MiniProfiler监控EF生成的SQL,你可能会遇到他们不兼容的问题,原因是Z.EntityFramework.Plus.EF6识别数据库类型...