ALinq中如何使用事务

下面是 ALinq 使用事务的例子,比较简单,直接上代码:

var db = new AccessNorthwind("C:/Northwind.mdb") { Log = Console.Out };
db.DoTransaction(delegate()
{
    db.Customers.Update(o => new Customer { CompanyName = "XXXX" }, o => o.CustomerID == "kkkkk");
    db.Customers.Delete(o => o.CustomerID == "aaaaa");
});
public static partial class Utility
{
    public static void DoTransaction(this DataContext dc, Action func)
    {
        dc.Connection.Open();
        var tran = dc.Connection.BeginTransaction();
        dc.Transaction = tran;

        try
        {
            func();
            tran.Commit();
        }
        catch
        {
            tran.Rollback();
            throw;
        }
        finally
        {
            dc.Connection.Close();
        }
    }
}

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/tools/

有朋友问到,如果是用 SQL 的,怎么写, OK,再上一个 SQL 的例子:

var str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Northwind.mdb";
new OleDbConnection(str).DoTransaction(delegate(IDbCommand command)
{
    command.CommandText = @"UPDATE [Customers]
                            SET [CompanyName] = @p0
                            WHERE [CustomerID] = @p1";
    command.Parameters.Add(new OleDbParameter("@p0", "XXXXX"));
    command.Parameters.Add(new OleDbParameter("@p1", "kkkkk"));
    command.ExecuteNonQuery();

    command.CommandText = @"DELETE FROM [Customers] WHERE [CustomerID] = @p0";
    command.Parameters.Add(new OleDbParameter("@p0", "aaaaa"));
    command.ExecuteNonQuery();
});
public static partial class Utility
{
    public static void DoTransaction(this DataContext dc, Action func)
    {
        dc.Connection.Open();
        var tran = dc.Connection.BeginTransaction();
        dc.Transaction = tran;

        try
        {
            func();
            tran.Commit();
        }
        catch
        {
            tran.Rollback();
            throw;
        }
        finally
        {
            dc.Connection.Close();
        }
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索command
, static
, connection
, oledbparameter
, public
, dc
ALinq
linq 事务、linq to sql 事务、linq 启用事务、linq max 如何使用、c linq 使用,以便于您获取更多的相关知识。

时间: 2025-01-03 11:02:50

ALinq中如何使用事务的相关文章

解决windows 2003+Sql2000中OLEDB分布式事务无法启动的解决方案

window|分布式|解决 在开发分布式数据库软件时,经常碰到下面的错误:服务器: 消息 7391,级别 16,状态 1,行 6该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务.[OLE/DB provider returned message: 不能在指定的事务处理器中获得新事务.]-----------------------------------------服务器: 消息 8520,级别 20,状态 1,行 8内部 MSDTC 事务的提交失败: Re

php中 预处理与事务同时使用

问题描述 php中 预处理与事务同时使用 sql1,sql2两条语句分别插入到不同的表中,sql2某一个属性就是sql1插入后自增长的ID值, 我希望使用预处理来处理sql1和sql2, 同时希望他们执行的时候是在一个事务中, 现在问题就是, 事务中没提交的操作并没有真的插入到数据库中, 所以自增长的ID不存在,sql2插入出错, 肿麽办? 解决方案 建议整合sql语句,优化结构.

jta-为什么在JMS中使用JTA事务控制全局事务失效

问题描述 为什么在JMS中使用JTA事务控制全局事务失效 package cn.producer; import java.util.Properties; import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.ExceptionListener;import javax.jms.JMSException;import javax.j

实例详解EJB中的六大事务传播属性

要弄清楚这些问题,就要牵涉到事务传播属性的问题,EJB 中针对不同的情况提供了六种不同的事物传播属性 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在http://www.aliyun.com/zixun/aggregation/22.html">关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACID 的原子性(Atomicity).一致性(Consistency).隔离性(Isolation).

数据库中的长事务的概念?

问题描述 数据库中的长事务的概念? 1C 数据库中的长事务的概念?什么是长事务呀?长事务的长指的是时间长吗?请大牛们指导一下~ 解决方案 http://zhidao.baidu.com/link?url=jUo1HSVSvUu7w3oFsIkZUviw9g5mq-HyHZKtFQEFD8DDq2zAuKzNYZBtbuU-77-Dfyd5dfNhtvIn1kjEBgx1ozsIeFAYxfaob0OeW7j6qxa

Android开发中的数据库事务用法分析_Android

本文实例讲述了Android开发中的数据库事务用法.分享给大家供大家参考,具体如下: 在android应用程序开发中,在使用到数据库的时候,事务处理是非常重要的. 首先Android数据库操作(特别是写操作)是非常慢的,将所有操作打包成一个事务能大大提高处理速度. 其次是保证数据的一致性,让一个事务中的所有操作都成功执行,或者失败,或者所有操作回滚. 如果您喜欢使用其他平台(如PHP + MySQL),代码通常在一个功能强大的服务器上运行,一般不会被意外中止,但在android平台上,您将会因为

Android开发中的数据库事务用法分析

本文实例讲述了Android开发中的数据库事务用法.分享给大家供大家参考,具体如下: 在android应用程序开发中,在使用到数据库的时候,事务处理是非常重要的. 首先Android数据库操作(特别是写操作)是非常慢的,将所有操作打包成一个事务能大大提高处理速度. 其次是保证数据的一致性,让一个事务中的所有操作都成功执行,或者失败,或者所有操作回滚. 如果您喜欢使用其他平台(如PHP + MySQL),代码通常在一个功能强大的服务器上运行,一般不会被意外中止,但在android平台上,您将会因为

在.NET 2.0 中使用自定义事务操作

.net 2.0 framework 中新增了 System.Transactions 命名空间,其中提供的一系列接口和类使得在.net 2.0 中使用事务比起从前要方便了许多.有关在 .net 2.0 下操作数据库事务的文章已经有了很多,这里只提一下如何设计自定义事务操作. 一.事务使用基础 先看一段使用事务的代码: 1using (TransactionScope ts= new TransactionScope())2{3 //自定义操作4 ts.Complete();5} 这里使用 us

在ASP程序中实现数据库事务控制

程序|控制|数据|数据库     在编程中,经常需要使用事务.所谓事务,就是一系列必须都成功的操作,只要有一步操作失败,所有其他的步骤也必须撤销.比如用ASP开发一个网络硬盘系统,其用户注册部分要做的事有: 将用户信息记入数据库 为用户开个文件夹用于存储 初始化用户操作日志 这三步必须使用事务,否则万一磁盘操作失败,而没有撤销数据库操作,就会造成只能登陆而不能操作的"死用户"现象. 由于数据库系统特殊的发展历史,小至Access,大到DB2,无不带有事务支持.因此上述步骤可以如下表示: