mvc 中如何使用事务方式操作数据库

new_new_man 2015-04-24 05:53:22
例如,通过两个实体模型Table_1、Table_2(分别对应于两个表)来同时向两个表插入记录,想要使用事务的方式,即两个插入都必须完成或者都不执行,如下的代码能否实现这种事务操作?或者应该怎么做才能实现事务操作?请高手指点,谢谢!
dd.AddToTable_1(new Table_1()//向表1插入一条记录
{
ID = 1,
OrderNumer =“ss”
});

dd.AddToTable_2(new Table_2()//向表2插入一条记录
{
Num = 109,
Name =“ss df”
});
dd.SaveChanges();//在这里保存修改,请问,这样能否实现事务的功能?
...全文
194 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2015-04-28
  • 打赏
  • 举报
回复
http://cnn237111.blog.51cto.com/2359144/1271600
new_new_man 2015-04-27
  • 打赏
  • 举报
回复
感谢楼上,你用的是最原始的SQL驱动来操作数据库的,呵呵,我现在说的是MVC框架中的 entity framwork操作数据库。谢谢!
hhh_haogesheng 2015-04-27
  • 打赏
  • 举报
回复
使用事务提交多个数据表示例 //定义SQL语句添加泛型集合 private void Frm_Main_Load(object sender, EventArgs e) { //创建数据库连接对象 SqlConnection sqlConn = new SqlConnection("Data Source=WIN-GI7E47AND9R\\LS;Database=db_TomeTwo;uid=sa;pwd =;"); List<String> strSqls = new List<string>();//创建集合对象 String strDelete1 = "delete From tb_Author Where AuthorId = '99'";//定义删除第一个表的SQL语句 strSqls.Add(strDelete1);//将SQL语句添加到集合中 String strDelete2 = "delete From tb_AuthorsBook Where AuthorId = '99'";//定义删除第二个表的SQL语句 strSqls.Add(strDelete2);//将SQL语句添加到集合中 string strInsert1 = "insert into tb_Author values('99','zhd')";//定义添加第一个表的SQL语句 strSqls.Add(strInsert1);//将SQL语句添加到集合中 string strInsert2 = "insert into tb_AuthorsBook values('66','C#范例大全','99')";//定义添加第二个表的SQL语句 strSqls.Add(strInsert2);//将SQL语句添加到集合中 if (ExecDataBySqls(strSqls, sqlConn))//如果执行成功 { MessageBox.Show("提交tb_Author数据表成功!", "信息提示"); MessageBox.Show("提交tb_AuthorsBook数据表成功!","信息提示"); } else { MessageBox.Show("提交tb_Author数据表失败!", "信息提示"); MessageBox.Show("提交tb_AuthorsBook数据表失败!", "信息提示"); }//codego.net/15/10/300/ SqlDataAdapter sqlda1 = new SqlDataAdapter("select * from tb_Author", sqlConn);//创建数据桥接器对象 SqlDataAdapter sqlda2 = new SqlDataAdapter("select * from tb_AuthorsBook", sqlConn);//创建数据桥接器对象 DataSet myds = new DataSet();//创建数据集对象 sqlda1.Fill(myds, "tb_Author");//填充数据集 sqlda2.Fill(myds, "tb_AuthorsBook");//填充数据集 dataGridView1.DataSource = myds.Tables["tb_Author"];//对第一个DataGridView进行数据绑定 dataGridView2.DataSource = myds.Tables["tb_AuthorsBook"];//对第二个DataGridView进行数据绑定 } //定义方法执行多个SQL语句同时提交多个数据表功能 public bool ExecDataBySqls(List<string> strSqls, SqlConnection sqlConn) { bool booIsSucceed = false;//声明提交数据是否成功的标记 SqlCommand sqlCmd = new SqlCommand();//创建SqlCommand对象 sqlCmd.Connection = sqlConn;//设置SqlCommand对象的Connection属性 if (sqlConn.State == ConnectionState.Closed) { sqlConn.Open();//打开数据库连接 } SqlTransaction sqlTran = sqlConn.BeginTransaction();//开始一个事务 try { sqlCmd.Transaction = sqlTran;//设置SqlCommand对象的Transaction属性 foreach (string item in strSqls) { sqlCmd.CommandType = CommandType.Text;//设置命令类型为SQL文本命令 sqlCmd.CommandText = item;//设置要对数据源执行的SQL语句 sqlCmd.ExecuteNonQuery();//执行SQL语句并返回受影响的行数 } sqlTran.Commit();//提交事务,持久化数据 booIsSucceed = true;//表示提交数据库成功 } catch { sqlTran.Rollback();//回滚事务,恢复数据 booIsSucceed = false;//表示提交数据库失败! } finally { sqlConn.Close();//关闭连接 strSqls.Clear();//清除列表strSqls中的元素 } return booIsSucceed;//方法返回值 }
new_new_man 2015-04-26
  • 打赏
  • 举报
回复
两位的意思是SaveChanges确实实现了事务操作?我上面的那段代码两个表的插入操作被作为一个事务了?谢谢!
insus 2015-04-25
  • 打赏
  • 举报
回复
事务在SQL中时行。
newtee 2015-04-24
  • 打赏
  • 举报
回复
SaveChanges 在事务内进行操作。 SaveChanges 将回滚该事务,并且如果任何脏 ObjectStateEntry 对象无法继续,将引发异常。
EF前面版本的InsertOnSubmit那些不是
第1章:对Spring框架进行宏观性的概述,力图使读者建立起对Spring整体性的认识。   第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。   第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行讲解。   第4章:讲解如何在Spring配置文件使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。   第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们还将对Spring容器一些高级主题进行深入的阐述。   第6章:我们从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的内核,分析它的底层结构和具体实现。   第7章:对如何使用基于AspectJ配置AOP的知识进行了深入的分析,这包括使用XML Schema配置文件、使用注解进行配置等内容。   第8章:介绍了Spring所提供的DAO封装层,这包括Spring DAO的异常体系、数据访问模板等内容。   第9章:介绍了Spring事务管理的工作机制,通过XML、注解等方式进行事务管理配置,同时还讲解了JTA事务配置知识。   第10章:对实际应用Spring事务管理各种疑难问题进行透彻的剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。   第11章:讲解了如何使用Spring JDBC进行数据访问操作,我们还重点讲述了LOB字段处理、主键产生和获取等难点知识。   第12章:讲解了如何在Spring集成Hibernate、myBatis等数据访问框架,同时,读者还将学习到ORM框架的混用和DAO层设计的知识。   第13章:本章重点对在Spring如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。   第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。   第15章:对Spring MVC框架进行详细介绍,对REST风格编程方式进行重点讲解,同时还对Spring 3.0的校验和格式化框架如果和Spring MVC整合进行讲解。   第16章:有别于一般书籍的单元测试内容,本书以当前最具实战的JUnit4+Unitils+ Mockito复合测试框架对如何测试数据库、Web的应用进行了深入的讲解。   第17章:以一个实际的项目为蓝本,带领读者从项目需求分析、项目设计、代码开发、单元测试直到应用部署经历整个实际项目的整体开发过程。

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧