简单数据工作单元实施

时间:2011-08-11 16:42:30

标签: c# .net unit-of-work simple.data

我正在尝试在Simple.Data中找到工作单元模式的示例实现。有人有吗?我目前正在使用非通用存储库,并且被告知实现UoW是可以做的事情。

1 个答案:

答案 0 :(得分: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(当前,原始)方法,该方法将执行乐观并发更新。