下面是 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();
}
}
}




相关文章:

  • 2022-12-23
  • 2021-04-08
  • 2021-11-05
  • 2022-02-02
  • 2021-09-14
猜你喜欢
  • 2021-08-18
  • 2022-01-08
  • 2021-08-29
  • 2021-08-30
  • 2022-12-23
相关资源
相似解决方案