您的位置:首页 > 其它

EF 事物

2015-06-04 14:27 393 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Common;

namespace testEF事物
{
class Program
{
static void Main(string[] args)
{
Pengbg_DataEntities db = new Pengbg_DataEntities();
DbConnection con = ((IObjectContextAdapter)db).ObjectContext.Connection;
//DbConnection con = db.Database.Connection;我不明白这里为啥非要转换为ObjectContext
con.Open();

using (var tran = con.BeginTransaction())
{
//var r = tran.IsolationLevel;
//   IsolationLevel 的默认值是: ReadCommitted = 4096 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,
//从而导致不可重复的读取或幻像数据。

try
{
db.Database.ExecuteSqlCommand(@"insert dbo.Sys_User VALUES  ( N'1',N'2' ,'3' )");
db.Database.ExecuteSqlCommand(@"insert dbo.Sys_User VALUES  ( N'1',N'2' ,'4' )");
db.Database.ExecuteSqlCommand(@"insert dbo.Sys_User VALUES  ( N'1',N'2' )");
//  这里才是事务中的代码
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();

}
finally
{
db.Dispose();
con.Close();
}
}
con.Close();
}
}
}


DbContext 类继承了IObjectContextAdapter 接口,IObjectContextAdapter 接口 里面有一个只读的ObjectContext类对象。这里测试EF 是4.0 ,高版本也一样。6.0 引用 using System.Data.Entity.Core.Objects;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: