npoco を使用してトランザクションを操作しようとしていますAbortTransaction
が、データベース内の何かをロールバックするメソッドを取得できません。
public class ItemRepository
{
private Func<Database> _db;
public ItemRepository(Func<Database> db)
{
_db = db;
}
Public void Update(){
using (_db().Transaction)
{
_db().BeginTransaction();
foreach (var item in itemToUpdate.Items)
{
_db().Insert(item);
if (SomethingIsNotCorrect())
{
_db().AbortTransaction();
}
}
_db().CompleteTransaction();
}
}}
テスト クラスからの呼び出し:
_db = () => new Database(String.Format("DataSource={0};Persist Security Info=False;", DbPath),"System.Data.SqlServerCe.4.0");
_itemRepository = new ItemRepository(() => _db());
_itemRepository.Update();
------------- 提案された回答の後に編集:
var db = _db();
using (db.Transaction)
{
db.BeginTransaction();
foreach (var item in itemToUpdate.Items)
{
db.Insert(item);
db.Transaction.Commit();
if (GetNutrientConns(itemToUpdate).Count > 2)
{
db.AbortTransaction();
}
}
db.CompleteTransaction();
}
ここで、db.Transaction.Commit() を使用して、db に何かを挿入する必要があります。次に、db.AbortTransaction() を実行しようとすると、エラー メッセージが表示されます。
「この SqlCeTransaction は完了しました。使用できなくなりました。」