简单数据工作单元实施

Phi*_*hil 13 .net c# unit-of-work simple.data

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

Mar*_*dle 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 :)
}
Run Code Online (Sandbox Code Playgroud)

(注意:此代码假定您使用的是Ado适配器,而IDENTITY指的是SQL Server,但代码可以在任何Ado提供程序和任何支持事务的适配器上运行.)

如果您希望能够创建一批操作并一次性运行它们,那么目前不会直接支持这些操作,但我愿意接受功能请求或补丁.

如果您正在对对象进行更改跟踪,那么可能有用的一件事是,从Simple.Data 0.9开始,SimpleRecord实现了ICloneable,因此您可以在选择后立即获取记录的副本,并在保存时将其用于比较背部.我将很快推出一个版本,支持更新(当前,原始)方法,该方法将执行乐观并发更新.