ADO.NET Entity Framework Extensions 简单应用
一、情景
如果你的项目中有返回多结果集的存储过程。
如果你的项目要和老项目中的ADO.Net共用事务。
如果你要动态的创建数据库的表。
但是你还是希望使用Entity Framework。那么继续往下看吧。
二、ADO.NET Entity Framework Extensions(下载地址)
1、引用EFExtensions.dll文件。
2、添加 using Microsoft.Data.Extensions; 的声明。
三、EFExtensions执行T-SQL语句
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执行存储过程
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语句获得实体集
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共享事务
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语句
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 简单应用相关推荐
- ADO.NET Entity Framework 基本概述
时间过得很快转眼间VS已经2010版了,在4月12日将会正式发布VS 2010 ADOEF 做为.Net 4.0 中被微软推荐的ORM框架,相比.Net 3.5 sp1 已经得到了进一步的增强,使用它 ...
- ADO.NET Entity Framework 学习(1) [ZT]
前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...
- 自定义Unity对象生命周期管理集成ADO.NET Entity Framework
在Unity中,从Unity 取得的实例为 Transient.如果你希望使用多线程方式,就需要在组成时使用lifecycle参数,这时候取出的组件就不再是同一个了.在Unity IOC中,它支持我们 ...
- Entity Framework (EF)/Linq To entity/ ESQL(entity sql)区别 ADO.NET Entity Framework:来自微软官方的ORM框架
长久以来,程序员和数据库总是保持着一种微妙的关系,在商用应用程序中,数据库一定是不可或缺的元件,这让程序员一定要为了连接与访问数据库而去学习 SQL 指令,至少对于我而言,我觉得这是一个很不爽的事情. ...
- 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
ado.net entity framework,在生产实体模型后.会生成一长串的connectionstring.如果此时你又新建了一个project,去调用原先放实体模型的project中的实体模 ...
- ADO.NET Entity Framework 学习
前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...
- 软件开发知识--[ADO.NET Entity Framework]
ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,早期被称为 ObjectSpace,现已经包含在 Vi ...
- ADO.NET Entity Framework 学习(1)
前一段时间园子里有很多文章介绍分析了Linq To SQL,它可以说是一个简单实现的ORM,是微软针对数据和对象的阻抗不平衡的问题.C# 3.0推出一些新的特性,比如Extension Method, ...
- 利用泛型与反射更新实体(ADO.NET Entity Framework)
自从ADO.NET Entity Framework面世以来,受到大家的热捧,它封装了大量代码生成的工具,用户只需要建立好实体之间的关系,系统就是会为用户自动成功了Add.Delete.CreateO ...
最新文章
- 关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”
- Tech.Ed 2008
- 腾讯牛逼,我酸了!!
- 李开复:21世纪7种人才最抢手
- 三类基于贪心思想的区间覆盖问题
- [转] Lodash
- HIVE: hive.error.on.empty.partition
- Spring Swagger URL传参问题(转)
- Codeforces Round #341 (Div. 2)
- 使用gitpages开启个人域名博客
- 2019.03.21 创建表 一对多,一对一,多对多。
- HTML+CSS实现个人简历
- 软件工程----项目的进度安排
- AI笔记: 数学基础之方向导数的计算和梯度
- unity的九宫格切割
- 斐波那契数列的背景及解决方法
- 基于51单片机的温度监测控制系统仿真程序原理图设计
- 垃圾分类里有哪些淘金机会?​
- mse python_MSE与MAE的区别与选择
- 【技术分享】一封伪造邮件引发的研究
热门文章
- 贪心/动态规划 - 买卖股票的最佳时机含手续费
- LeetCode每日一题 530. 二叉搜索树的最小绝对差
- 如何根据两个顺序构造⼀个唯⼀的⼆叉树?
- c++primer练习13.42
- python分类预测降低准确率_python实现吴恩达机器学习练习3(多元分类器和神经网络)...
- Leetcode题库 762.二进制表示中质数个计算置位(哈希数组 C实现)
- 计组-CISC和RISC的基本概念
- 快速上手Arduino -- 打印超声波模块测距信息到OLED屏幕上
- 强java_Java (强/弱/软/虚)引用
- java.util.concurrent 编程范例