public IEnumerable<string> Get() { Card c = new Card(); t_BoxCard tt1 = context.Set<t_BoxCard>().Where(o => o.CardNo == "56326764").FirstOrDefault(); tt1.CardStatus = 22; OneCardPassEntities s = new OneCardPassEntities(); TransactionOptions transactionOption = new TransactionOptions(); //设置事务隔离级别 transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; //设置事务超时时间,这里设置为8分钟 transactionOption.Timeout = new TimeSpan(0, 8, 0); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOption)) { context.Entry(tt1).State = System.Data.Entity.EntityState.Modified; c.cardno = "56326764"; c.createcardnoid = "563267645632676456326764563267645632676456326764563267645632676456326764563267645632676456326764"; c.deposit = 20; c.rent = 20; c.balance = 60; context4.Set<Card>().Add(c); context.SaveChanges(); context4.SaveChanges(); scope.Complete(); } return new string[] { "value1", "value2" }; }
由上代码可看出,事务处理两个数据库上下文类,也就可以说是分布式事务 ,如果一个数据库的话这样写代码就ok了,但是两个的话,第二个也就是context4会报错例如 基础程序open失败,这样我们需要设置msdtc,开启分布式服务(这些设置要在服务器端进行),具体怎么设置,参考
http://www.cnblogs.com/taiyonghai/p/6047849.html
还有文章:
找到控制面板,管理工具。
1.打开组件服务
2.
3.打开本地DTC。按照照片上的勾选正确选项。
4.然后打开我的电脑的属性
5.
6.打开COM安全上面编辑限制
7.
8.点击添加
9.
10.添加这一个。
11.
12.然后把本地访问和远程访问都打上允许的对勾
13.然后点击下面的编辑限制
14.
15.跟上一个一样,但是这个需要把四个都勾选上
16.
17.打开高级防火墙
在出站规则里面打开2个分布式事务协调处理器(多的话都打开)
在入展规则里面打开6个分布式事务协调处理器(多的话都打开)
18. 组件服务-计算机-我的电脑出现红色向下箭头的解决办法
在“服务”里找到这三个服务,都启动就行了
Distributed Transaction Coordinator
Remote Procedure Call (RPC)
Security Accounts Manager
注意:有一部分新的计算机,由硬件方给安装的系统中,可能由于这种系统没有安装
system event notification service 服务
导致组件服务出现向下红箭头的问题.
找到控制面板,管理工具。1.打开组件服务2. 3.打开本地DTC。按照照片上的勾选正确选项。4.然后打开我的电脑的属性5. 6.打开COM安全上面编辑限制7. 8.点击添加9. 10.添加这一个。11. 12.然后把本地访问和远程访问都打上允许的对勾13.然后点击下面的编辑限制14. 15.跟上一个一样,但是这个需要把四个都勾选上16. 17.打开高级防火墙 在出站规则里面打开2个分布式事务协调处理器(多的话都打开) 在入展规则里面打开6个分布式事务协调处理器(多的话都打开) 18. 组件服务-计算机-我的电脑出现红色向下箭头的解决办法 在“服务”里找到这三个服务,都启动就行了 Distributed Transaction Coordinator Remote Procedure Call (RPC) Security Accounts Manager
注意:有一部分新的计算机,由硬件方给安装的系统中,可能由于这种系统没有安装system event notification service 服务导致组件服务出现向下红箭头的问题.
文章摘自未知大神