码迷,mamicode.com
首页 > 其他好文 > 详细

EF框架 多表保存

时间:2016-07-12 18:54:55      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

EF的SaveChanges确实有事务功能,这个3楼的链接里面有:
"In all versions of Entity Framework, whenever you execute SaveChanges() to insert, update or delete on the database the framework will wrap that operation in a transaction. This transaction lasts only long enough to execute the operation and then completes. When you execute another such operation a new transaction is started."

不过事务肯定也需要底层的ado.net provider的支持,LZ的问题是mysql的provider里面报出来的错误。这个能搜到一些同样的问题,貌似是EF的事务方式和mysql的.net connector还不太兼容,mysql上有这个bug的报告,解决方案是使用TransactionScope,不过我没试过。

 

今天才发现问题的根本所在。其实这里与事务相关的代码是没有多大错误的,导致事务无效的根本原因是当前的Mysql数据库引擎根本就不支持事务!!!查看你需要用到事务的表的引擎类型:
SHOW TABLE STATUS FROM DB_name WHERE NAME=‘table_name‘; 
 如果结果中Engine列的值不是“InnoDB”的话,那么你在代码中不管怎样写相关事务代码都是起不到作用的!需要将该表的引擎修改成InnoDB事务才会有效,修改语句:
ALTER TABLE engineTest ENGINE = INNODB
希望对以后看到的人有帮助

 

http://bbs.csdn.net/topics/390982230

EF框架 多表保存

标签:

原文地址:http://www.cnblogs.com/fjcrenren/p/5664389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!