最新评论
Re:Entity Framework中的事务问题 Seen_ 2011-06-09 15:00
项目中,一般都是把TestEntities但参数传过去的。
所有的业务做完,才SaveChanges()或Commit();
Re:Entity Framework中的事务问题 小白.net 2010-07-15 11:26
@锦瑟无端五十弦
谢谢
顺便请教下楼主条用存储过程如果返回多个结果集
EF4的复杂类型只能判断出第一个返回的表
这个如何处理
我用的EF4
Re:Entity Framework中的事务问题 锦瑟无端五十弦 2010-07-15 11:22
@韦恩卑鄙 v-zhewg @waynebaby
有一个问题,在开启TransactionScope之后,如果接下来的代码中没有显式的open connection的代码,而是直接进行数据操作(即使是同一个Context),就会抛出需要开启MSDTC的异常,而如果加了open connection,则运行正常。你知不知这是什么道理?
Re:Entity Framework中的事务问题 锦瑟无端五十弦 2010-07-15 11:19
@小白.net
你需要下载EF Extension并添加引用,可以google一把。
Re:Entity Framework中的事务问题 小白.net 2010-07-14 23:53
using (t.Connection.CreateConnectionScope())// EF Extension中的扩展方法,作用是open connection并在dispose里释放它
这个方法我怎么没有
Re:Entity Framework中的事务问题 张磊_larry.zhang 2010-07-14 17:09
用4.0吧,完全支持T-SQL,反正EF是在服务端的
Re:Entity Framework中的事务问题 Assion Yang 2010-07-14 17:03
@韦恩卑鄙 v-zhewg @waynebaby
不敢不敢,我也是个人感觉。
Re:Entity Framework中的事务问题 韦恩卑鄙 v-zhewg @waynebaby 2010-07-14 17:01
@Assion Yang
[quote]Assion Yang:
@韦恩卑鄙 v-zhewg @waynebaby
人个感觉不敢保证是同一connection[/quote]
我看了下源代码
在EF 4.0里面
一次savechange
一次exec sp
和一次execfunction
都会从连接池里面拿出一个连接来
感谢指出问题 长知识了
Re:Entity Framework中的事务问题 Assion Yang 2010-07-14 16:48
@韦恩卑鄙 v-zhewg @waynebaby
人个感觉不敢保证是同一connection
Re:Entity Framework中的事务问题 金色海洋(jyk) 2010-07-14 16:44
自己写,舒心。
Re:Entity Framework中的事务问题 韦恩卑鄙 v-zhewg @waynebaby 2010-07-14 16:42
[quote]温景良(Jason):
[quote]韦恩卑鄙 v-zhewg @waynebaby:
不需要 如果是同一个sqlconnection的话 自动调用sql 连接层的trans
不需要任何外部支持
如果是跨数据库的或者跨连接的,甚至跨服务的
TS会自动调用msdtc
你只要保证你的msdtc 服务开着 一般就可以了
万一中的万一 ,出错了可以再找资料 我帮你找呵呵[/quote]
有个问题啊,如果在里面执行多条语句,数据层的连接是采用dispose(),这样会判断是同一个连接吗[/quote]
只要context 不dispose 连接就还是同一个。
补充 看来是错的
只要是一次execute 就是同一个。。。
Re:Entity Framework中的事务问题 ejiyuan 2010-07-14 16:26
EF不提倡实用Cmmand方式调用,如果非要用#2是正解
Re:Entity Framework中的事务问题 Assion Yang 2010-07-14 16:25
@温景良(Jason)
用分布式事务的好处就是可以独立于数据层,在业务层实现组装事务。比如:
数据层方法
SaveOrder(); --保存订单
SaveOrderItem(); --保存订单明细
UpdateCustomer(); --更新用户信息
UpdateInventory(); --更新库存信息
SaveNetPay(); --保存支付信息
这些都是数据层基于ORM的独立映射方法
业务层
创建订单方法
CreateSo()
{
事务
{
SaveOrder(); --保存订单
SaveOrderItem(); --保存订单明细
UpdateCustomer(); --更新用户信息
UpdateInventory(); --更新库存信息
SaveNetPay(); --保存支付信息
}
}
这样可以以业务核心随意装配持久,如果上例不采用分布式事务,每个组装的业务都要实现相应的数据层聚合,想一想也比较可怕了。尤其以ORM为持久层的都是相对独立的数据映射。
Re:Entity Framework中的事务问题 温景良(Jason) 2010-07-14 16:02
[quote]韦恩卑鄙 v-zhewg @waynebaby:
@温景良(Jason)
这个没测试过呢 似乎是可以滴[/quote]
这个问题我比较关心,以前为了在一个连接里执行事务,都只能写在一起,不然连接被dispose()掉了,就没有了.如果close()应该就没有问题
Re:Entity Framework中的事务问题 韦恩卑鄙 v-zhewg @waynebaby 2010-07-14 15:59
@温景良(Jason)
这个没测试过呢 似乎是可以滴
Re:Entity Framework中的事务问题 温景良(Jason) 2010-07-14 15:59
[quote]韦恩卑鄙 v-zhewg @waynebaby:
不需要 如果是同一个sqlconnection的话 自动调用sql 连接层的trans
不需要任何外部支持
如果是跨数据库的或者跨连接的,甚至跨服务的
TS会自动调用msdtc
你只要保证你的msdtc 服务开着 一般就可以了
万一中的万一 ,出错了可以再找资料 我帮你找呵呵[/quote]
有个问题啊,如果在里面执行多条语句,数据层的连接是采用dispose(),这样会判断是同一个连接吗
Re:Entity Framework中的事务问题 陈梓瀚(vczh) 2010-07-14 15:59
@锦瑟无端五十弦
试试看就知道了
Re:Entity Framework中的事务问题 温景良(Jason) 2010-07-14 15:56
[quote]Assion Yang:
@温景良(Jason)
小良良,如果达到一定条件就自动升级成为分布式事务了,MSDTC还是需要相应配置一下的。都是做大系统的,配一下有何防。又不是虚拟主机。[/quote]
有个问题啊,他启动的事务在sql查询分析器可以看到吗
Re:Entity Framework中的事务问题 韦恩卑鄙 v-zhewg @waynebaby 2010-07-14 15:56
@Assion Yang
其实我都使用默认配置呵呵
Re:Entity Framework中的事务问题 韦恩卑鄙 v-zhewg @waynebaby 2010-07-14 15:55
@锦瑟无端五十弦
你只要保证哟你的歌是同一条connection
或者说用的是同一个 EF context
就不会自动升级为 DT 也不会产生额外的开销
