EF操作-事务
来源:互联网 发布:乳胶漆品牌 知乎 编辑:程序博客网 时间:2024/05/18 03:59
在软件开发过程中,我们经常会遇到这样的场景,主从表,主表添加一条记录(主键自动增长),从表添加多条记录,同时从表需要用到刚刚添加的主表的自动增长的主键id,接下来我们就演示一下在EF中怎么实现事务,我们假设TUsers表与TUsersExtInfo表,代码如下:
class Program { static void Main(string[] args) { CodeFirstContext context = new CodeFirstContext(); //IDbTransaction trans = null; DbTransaction trans=null; try { //打开连接 context.Database.Connection.Open(); //开始事务 trans = context.Database.Connection.BeginTransaction(); //context.Database.UseTransaction(trans);//这句不加的话,引发异常,"SqlConnection不支持并行事务" TUsers user = new TUsers(); user.Account = "admin123"; user.Password = "123456789"; user.CreateDate = DateTime.Now; context.Users.Attach(user); context.Entry(user).State = EntityState.Added; var affectcount = context.SaveChanges(); TUsersExtInfo userExt = new TUsersExtInfo(); userExt.UserId =user.UserId;//获取刚刚添加的自动增长id context.UsersExtInfo.Attach(userExt); context.Entry(userExt).State = EntityState.Added; affectcount = context.SaveChanges(); //throw new Exception("发生异常"); trans.Commit(); Console.WriteLine(string.Format("新添加记录id:{0}", user.UserId)); var userlist = context.Users.ToList(); foreach (var u in userlist) { Console.WriteLine(string.Format("账号:{0} 密码:{1}", u.Account, u.Password)); } } catch (Exception ex) { trans.Rollback(); Console.WriteLine("错误信息:" + ex.Message); } finally { context.Database.Connection.Close(); } } }
或者直接使用SQL也可以。
阅读全文
0 0
- EF操作-事务
- ef事务
- EF 事务
- EF 自带事务
- EF Code-First中的事务
- WCF分布式事务(EF)
- EF 跨数据库操作
- EF的操作
- EF操作-删除记录
- 【EF】EF中的对表操作
- ef 事务 的一种处理方法
- EF操作增删改查
- 用EF框架操作数据库
- EF操作存储过程调用
- ef操作基类示例
- EF操作-修改部分字段
- EF是怎么操作数据库
- EF中的那些批量操作
- iscsi网络储存初探
- Java NIO之 直接缓冲区与非直接缓冲区
- HTML音频标记的应用
- 结合MBTI人格理论探讨爱因斯坦的两次婚姻
- java中string与byte[]的转换
- EF操作-事务
- firewalld
- FATAL ERROR in native method: JDWP No transports initialized
- webSocket的认识
- webSocket.java创建连接和关闭连接
- https相关概念
- Linux_ubuntu环境下Qt无法编译代码显示-1: error: cannot find -lGL错误的解决方法
- 理解下小爬虫
- 您的凭据不工作 之前用于连接到******的凭据无法工作。请输入新凭据。