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

    有朋友问到,如果是用 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();
    }
    }
    }




  • 相关阅读:
    SQL server 数据库基础语句
    数据库学习的第一天
    C# 函数
    C# for循环的嵌套 作用域
    C# for循环语句
    Docker的基本使用
    django连接postgresql
    docker的安装
    Postgresql的使用
    Celery的介绍
  • 原文地址:https://www.cnblogs.com/ansiboy/p/2275241.html
Copyright © 2011-2022 走看看