EF 系统学习
2011-03-24 01:52 by DCBI, 90 visits, 收藏, 编辑EF中几个重要的,如ObjectContext、ObjectQuery、、EntityClient、Linq to Entity以及ESQL相关处理。而linq只是一个技术的应用。
System.Data.Common.DbTransaction与System.Transactions.TransactionScope
TransactionScope可解决[死锁(两个Context使用DbTransaction)]
可解决死锁TransactionScope代码段;
using (System.Transactions.TransactionScope tc = new TransactionScope()) { try{ myContext context1 = new myContext(); DBItem item1 = new DBItem(); item1.ItemID = "w"; item1.ItemMatter = "wxwinter"; context1.AddObject("DBItem", item1); context1.SaveChanges(); myContext context2 = new myContext(); DBItem item2 = new DBItem(); item2.ItemID = "w"; item2.ItemMatter = "wxd"; context2.AddObject("DBItem", item2); context2.SaveChanges(); tc.Complete(); } catch{ } }
DbTransaction代码段:
myContext context1 = new myContext(); DBItem item1 = new DBItem(); item1.ItemID = "w"; item1.ItemMatter = "wxwinter"; context1.AddObject("DBItem", item1); if (context1.Connection.State != ConnectionState.Open) { context1.Connection.Open(); } System.Data.Common.DbTransaction tran = context1.Connection.BeginTransaction(); context1.SaveChanges(); try{ myContext context2 = new myContext(); DBItem item2 = new DBItem(); item2.ItemID = "w"; item2.ItemMatter = "wxd"; context2.AddObject("DBItem", item2); context2.SaveChanges(); tran.Commit(); } catch{ tran.Rollback(); }