我试图在 Simple.Data 中找到工作单元模式的示例实现。有人有吗?我目前正在使用非通用存储库,并被告知要实施 UoW。
问问题
2189 次
1 回答
15
如果您想从工作单元中获得事务涵盖的一组插入/更新/删除操作,则支持:
var db = Database.Open();
var tx = db.BeginTransaction(); // Internal IDbConnection opened by this call
try
{
order = tx.Orders.Insert(order); // Returned record will have new IDENTITY value
foreach (var item in items)
{
item.OrderId = order.Id;
tx.Items.Insert(item);
}
tx.Commit(); // Internal IDbConnection closed by this call...
}
catch
{
tx.Rollback(); // ...or this call :)
}
(注意:此代码假定您使用的是 Ado 适配器,并且 IDENTITY 指的是 SQL Server,但该代码将适用于任何 Ado 提供程序和任何支持事务的适配器。)
如果您希望能够创建一批操作并一次性运行它们,那么目前不直接支持,但我对功能请求或补丁持开放态度。
如果您在对对象进行更改跟踪,可能有助于了解的一件事是,从 Simple.Data 0.9 开始,SimpleRecord 实现了 ICloneable,因此您可以在选择记录后复制一份记录,并在保存时使用它进行比较背部。我将很快发布一个支持 Update(current, original) 方法的版本,该方法将进行乐观并发更新。
于 2011-08-12T00:48:02.623 回答