EF 事物

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;

转载于:https://www.cnblogs.com/bingguang/p/4551748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值