Dapper.net Transaktion problem
Ich bin versucht, einen commit für eine Transaktion auf meinem Sql-Server-2008-Datenbank - Erstens 2 einfügen, gefolgt von ein paar update ' s, aber sobald er versucht, führen Sie das erste update, bekomme ich die folgende Fehlermeldung:
ExecuteNonQuery erfordert der Befehl eine Transaktion, wenn die
Verbindung dem Befehl zugewiesen ist, in einem anhängigen lokale Transaktion.
Die Transaction-Eigenschaft der Befehl wurde nicht initialisiert.
Hier ist der code, leicht verändert für die Kürze:
using (_cn)
{
_cn.Open();
IDbTransaction transaction = _cn.BeginTransaction();
topicId = (int)_cn.Query<decimal>(qAddTopic, new { pForumId = topic.ForumId }, transaction).Single();
postId = (int)_cn.Query<decimal>(qAddPost, new { pTopicId = topicId }, transaction).Single();
_cn.Execute(qUpdateForums, new { pLastPostId = postId });
_cn.Execute((qUpdateSiteTotals));
transaction.Commit();
}
Den ersten 2 Einsätze gut funktionieren, aber sobald es versucht, führen Sie eines der updates, keine Freude.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hab das problem gefunden - ich war einfach fehlen, die Transaktion param, wenn ich rief die updates, in der Erwägung, dass mit den bisherigen Einsätzen, dass die waren in Ordnung arbeiten, die ich hatte waren die
IDbTransaction
param! Mein schlechtes!Beispiel:
Connection.Query<Entitiy>("sqlQuery",param: new { id= ID}, transaction: Transaction)
Microsoft empfiehlt TransactionScope über Datenbank IDbTransaction, wenn möglich. Der folgende code sollte funktionieren, vorausgesetzt, dass nichts falsch mit Ihrem SQL und managed provider automatisch, trägt in der ambient-Transaktion - etwas, das gut erzogene Anbieter tun müssen.