EF 事物

时间:2022-06-09 17:41:41
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;

EF 事物的更多相关文章

  1. .net EF 事物 订单流水号的生成 (二):观察者模式、事物、EF

    针对.net EF 事物 订单流水号的生成 (一)  的封装. 数据依然不变. using System; using System.Linq; using System.Transactions; ...

  2. EF 事物Transaction简单操作

    /// <summary> /// 申请提现 /// </summary> /// <param name="userId">用户id</ ...

  3. 【netcore基础】ConcurrentDictionary 使用字符串作为key给代码加锁且使用EF事物防止并发调用数据混乱的问题

    业务场景需要锁住指定的字符串下的代码,防止并发创建多个订单 这里我们使用 ConcurrentDictionary 首先初始化一个字典 private static readonly Concurre ...

  4. &period;net EF 事物 订单流水号的生成 &lpar;一&rpar;

    首先需要 添加 System.Transactions 程序集 数据表: create table SalesOrder ( ID ,) primary key not null, OrderNo ) ...

  5. &percnt;E3&percnt;80&percnt;90&percnt;E7&percnt;BD&percnt;91&percnt;E7&percnt;BB&percnt;9C&percnt;E7&percnt;BC&percnt;96&percnt;E7&percnt;A8&percnt;8B&percnt;E3&percnt;80&percnt;91

    "%3Cdiv%20class%3D%22htmledit_views%22%20id%3D%22content_views%22%3E%0A%20%20%20%20%20%20%20%20 ...

  6. 坑到了,EF执行带事物的存储过程

    用EF开发项目,今天调用 带事物 存储过程,始终报错,"EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配.上一计数 = 1,当前计数 = 0.\r\nEXEC ...

  7. EF&plus;LINQ事物处理 C&num; 使用NLog记录日志入门操作 ASP&period;NET MVC多语言 仿微软网站效果&lpar;转&rpar; 详解C&num;特性和反射(一) c&num; API接受图片文件以Base64格式上传图片 &period;NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  8. EF&plus;LINQ事物处理

    在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作同一条数据的同一个字段的话, ...

  9. &period;NET MVC&plus; EF&plus;通用存储过程实现增删改功能以及使用事物处理

    引摘: 1.EF对事务进行了封装:无论何时执行任何涉及Create,Update或Delete的查询,都会默认创建事务.当DbContext类上的SaveChanges()方法被调用时,事务就会提交, ...

随机推荐

  1. 10月24日下午PHP封装

    class Ren { private $name; private $sex; private $age;//年龄必须在18-50岁之间 function __construct($n) { $th ...

  2. winrt简单克隆对象

    public MapPoint Copy()//MapPoint克隆方法 { MapPoint p = new MapPoint();//这是我自定义的对象 //利用反射获得类成员 FieldInfo ...

  3. Node&period;js学习-1

    关于node.js 首先,node.js不是一门语言,是一个平台.因为在以前,javascript主要是用于网页的交互,所以必须依附于浏览器存在,只有在浏览器上才能运行javascript. 后来ja ...

  4. &lbrack;转&rsqb;forever&colon; 让nodejs应用后台执行

    在LINUX中我们可以使用这种简单的方式让node.js在后台运行: nohup node your_app.js & forever可以让我们做得更好,并且可以跨平台的在windows和Li ...

  5. HDU5739 Fantasia(点双连通分量 &plus; Block Forest Data Structure)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5739 Description Professor Zhang has an undirect ...

  6. 【转】git命令

    Git使用 1. git pull    更新服务器代码到本地a). git pull origin master是将origin这个版本库的代码更新到本地的master主分支 2. git push ...

  7. Java多线程基础总结

    一.线程和进程关系 二.创建方式1.继承Thread类,重写run方法2.实现Runable接口,重写run方法3.使用匿名内部类 三.API接口start()currentThread() 获取当前 ...

  8. 搜索引擎solr和elasticsearch

    刚开始接触搜索引擎,网上收集了一些资料,在这里整理了一下分享给大家. 一.关于搜索引擎 搜索引擎(Search Engine)是指根据一定的策略.运用特定的计算机程序从互联网上搜集信息,在对信息进行组 ...

  9. Preload,Prefetch 和它们在 Chrome 之中的优先级

    前言 上周五到的时候,想起之前在手游平台上有处理dns-prefetch的优化,那这篇分享的就更仔细了.今日早读文章由@gy134340翻译并授权分享. 正文从这开始- 今天我们来深入研究一下 Chr ...

  10. 互粉的sql查询

    建立表: CREATE TABLE `tb_sns_attention` ( `id` int(11) NOT NULL AUTO_INCREMENT, `to_uid` int(11) NOT NU ...