Dapper.NET
Transakcje
Szukaj…
Składnia
- Conn.Execute (sql, transakcja: tran); // określ parametr według nazwy
- Conn.Execute (sql, parametry, tran);
- Conn.Query (sql, transakcja: tran);
- Conn.Query (sql, parametry, tran);
- czekaj na conn.ExecuteAsync (sql, transakcja: tran); // Asynchronizacja
- czekaj na conn.ExecuteAsync (sql, parametry, tran);
- czekaj na conn.QueryAsync (sql, transakcja: tran);
- czekaj na conn.QueryAsync (sql, parametry, tran);
Korzystanie z transakcji
W tym przykładzie użyto SqlConnection, ale dowolne IDbConnection jest obsługiwane.
Również dowolna transakcja IDb jest obsługiwana z powiązanego połączenia IDb.
public void UpdateWidgetQuantity(int widgetId, int quantity)
{
using(var conn = new SqlConnection("{connection string}")) {
conn.Open();
// create the transaction
// You could use `var` instead of `SqlTransaction`
using(SqlTransaction tran = conn.BeginTransaction()) {
try
{
var sql = "update Widget set Quantity = @quantity where WidgetId = @id";
var parameters = new { id = widgetId, quantity };
// pass the transaction along to the Query, Execute, or the related Async methods.
conn.Execute(sql, parameters, tran);
// if it was successful, commit the transaction
tran.Commit();
}
catch(Exception ex)
{
// roll the transaction back
tran.Rollback();
// handle the error however you need to.
throw;
}
}
}
}
Przyspiesz wkładki
Zawijanie grupy wstawek w transakcji przyspieszy je zgodnie z tym pytaniem / odpowiedzią StackOverflow .
Możesz użyć tej techniki lub możesz użyć Kopiowania zbiorczego, aby przyspieszyć serię powiązanych operacji do wykonania.
// Widget has WidgetId, Name, and Quantity properties
public void InsertWidgets(IEnumerable<Widget> widgets)
{
using(var conn = new SqlConnection("{connection string}")) {
conn.Open();
using(var tran = conn.BeginTransaction()) {
try
{
var sql = "insert Widget (WidgetId,Name,Quantity) Values(@WidgetId, @Name, @Quantity)";
conn.Execute(sql, widgets, tran);
tran.Commit();
}
catch(Exception ex)
{
tran.Rollback();
// handle the error however you need to.
throw;
}
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow