Подтвердить что ты не робот

Простая сборка данных

Я пытаюсь найти пример реализации шаблона Unit Of Work в Simple.Data. Кто-нибудь есть? В настоящее время я использую не общие репозитории, и мне сказали, что выполнение UoW - это что-то делать.

4b9b3361

Ответ 1

Если то, что вы хотите от Единицы работы, представляет собой набор операций вставки/обновления/удаления, охватываемых транзакцией, то это поддерживается:

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, поэтому вы можете взять копию записи сразу после ее выбора и использовать ее для сравнение при сохранении задний. Я скоро выпущу релиз с поддержкой метода обновления (текущего, оригинального), который будет делать оптимистичные обновления concurrency.