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