我正在使用 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.AbortTransaction() 时,我收到错误消息:
“此 SqlCeTransaction 已完成;它不再可用。”