zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    Boost智能指针使用总结
    C++细节理解
    Mysql导入导出
    Mysql Join语法以及性能优化
    数据库设计三大范式
    Mysql子查询
    js面向对象的实现(example 一)
    js对象常用2中构造方法
    RequireJS 加载 easyui
    Cordova 打包 Android release app 过程详解
  • 原文地址:https://www.cnblogs.com/bingguang/p/4551748.html
Copyright © 2011-2022 走看看