一、情景

如果你的项目中有返回多结果集的存储过程。

如果你的项目要和老项目中的ADO.Net共用事务。

如果你要动态的创建数据库的表。

但是你还是希望使用Entity Framework。那么继续往下看吧。

二、ADO.NET Entity Framework Extensions(下载地址)

1、引用EFExtensions.dll文件。

2、添加 using Microsoft.Data.Extensions; 的声明。

三、EFExtensions执行T-SQL语句

view sourceprint?
01 public void ExecuteSQL(string sql)
02 {
03     using (DBEntities db = new DBEntities())
04     {
05         using (db.Connection.CreateConnectionScope())
06         {
07             var cmd = db.CreateStoreCommand("update Orders set Freight=8 where OrderID=10292", CommandType.Text);
08  
09             cmd.ExecuteNonQuery();
10         }
11     }
12 }

四、EFExtensions执行存储过程

view sourceprint?
01 public DataSet ExecuteProcedure()
02 {
03     using (DBEntities db = new DBEntities())
04     {
05         var cmd = db.CreateStoreCommand("CustOrdersOrders", CommandType.StoredProcedure, new SqlParameter("CustomerID", "ALFKI"));
06  
07         SqlDataAdapter da = new SqlDataAdapter(cmd as SqlCommand);
08         DataSet ds = new DataSet();
09         da.Fill(ds);
10         return ds;
11     }
12 }

五、EFExtensions执行T-SQL语句获得实体集

view sourceprint?
1 public IEnumerable<Orders> GetSQL()
2 {
3     using (DBEntities db = new DBEntities())
4     {
5         return db.CreateStoreCommand("select * from Orders", CommandType.Text).Materialize<Orders>();
6     }
7 }

六、让EF与ADO.Net共享事务

view sourceprint?
01 public void UseSameTran()
02 {
03     using (var tran = new TransactionScope(TransactionScopeOption.Required))
04     {
05         using (DBEntities db = new DBEntities())
06         {
07             using (db.Connection.CreateConnectionScope())
08             {
09                 Orders order = db.Orders.FirstOrDefault(o => o.OrderID == 10291);
10                 order.Freight = 7;
11                 db.SaveChanges();
12  
13                 var cmd = db.CreateStoreCommand("update Orders set Freight=8 where OrderID=10292", CommandType.Text);
14  
15                 cmd.ExecuteNonQuery();
16                 tran.Complete();
17             }
18         }
19     }
20 }

七、查看Linq的T-SQL语句

view sourceprint?
1 var q = from p in context.Products
2         where p.ProductName.StartsWith("Foo")
3         select p;
4  
5 // before
6 string commandText = ((ObjectQuery<Product>)q).ToTraceString();
7  
8 // after
9 string commandText = q.ToTraceString();

八、结束语

用EF做项目,上面这些也都是容易碰到的不太好解决的问题。Entity Framework Extensions都为我们解决了。

在下载的实例中还有一些其他的应用。后面的就靠各位去发掘了吧。

转载于:https://www.cnblogs.com/xtsjh/archive/2011/11/03/2234229.html

ADO.NET Entity Framework Extensions 简单应用相关推荐

  1. ADO.NET Entity Framework 基本概述

    时间过得很快转眼间VS已经2010版了,在4月12日将会正式发布VS 2010 ADOEF 做为.Net 4.0 中被微软推荐的ORM框架,相比.Net 3.5 sp1 已经得到了进一步的增强,使用它 ...

  2. ADO.NET Entity Framework 学习(1) [ZT]

    前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...

  3. 自定义Unity对象生命周期管理集成ADO.NET Entity Framework

    在Unity中,从Unity 取得的实例为 Transient.如果你希望使用多线程方式,就需要在组成时使用lifecycle参数,这时候取出的组件就不再是同一个了.在Unity IOC中,它支持我们 ...

  4. Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架

    长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情. ...

  5. 如何解决ado.net entity framework的使用,再别的调用项目中依然正常

    ado.net entity framework,在生产实体模型后.会生成一长串的connectionstring.如果此时你又新建了一个project,去调用原先放实体模型的project中的实体模 ...

  6. ADO.NET Entity Framework 学习

    前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...

  7. 软件开发知识--[ADO.NET Entity Framework]

    ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,早期被称为 ObjectSpace,现已经包含在 Vi ...

  8. ADO.NET Entity Framework 学习(1)

    前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...

  9. 利用泛型与反射更新实体(ADO.NET Entity Framework)

    自从ADO.NET Entity Framework面世以来,受到大家的热捧,它封装了大量代码生成的工具,用户只需要建立好实体之间的关系,系统就是会为用户自动成功了Add.Delete.CreateO ...

最新文章

  1. 关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”
  2. Tech.Ed 2008
  3. 腾讯牛逼,我酸了!!
  4. 李开复:21世纪7种人才最抢手
  5. 三类基于贪心思想的区间覆盖问题
  6. [转] Lodash
  7. HIVE: hive.error.on.empty.partition
  8. Spring Swagger URL传参问题(转)
  9. Codeforces Round #341 (Div. 2)
  10. 使用gitpages开启个人域名博客
  11. 2019.03.21 创建表 一对多,一对一,多对多。
  12. HTML+CSS实现个人简历
  13. 软件工程----项目的进度安排
  14. AI笔记: 数学基础之方向导数的计算和梯度
  15. unity的九宫格切割
  16. 斐波那契数列的背景及解决方法
  17. 基于51单片机的温度监测控制系统仿真程序原理图设计
  18. 垃圾分类里有哪些淘金机会?​
  19. mse python_MSE与MAE的区别与选择
  20. 【技术分享】一封伪造邮件引发的研究

热门文章

  1. 贪心/动态规划 - 买卖股票的最佳时机含手续费
  2. LeetCode每日一题 530. 二叉搜索树的最小绝对差
  3. 如何根据两个顺序构造⼀个唯⼀的⼆叉树?
  4. c++primer练习13.42
  5. python分类预测降低准确率_python实现吴恩达机器学习练习3(多元分类器和神经网络)...
  6. Leetcode题库 762.二进制表示中质数个计算置位(哈希数组 C实现)
  7. 计组-CISC和RISC的基本概念
  8. 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上
  9. 强java_Java (强/弱/软/虚)引用
  10. java.util.concurrent 编程范例