gpt4 book ai didi

c# - Win RT SQLite 事务性插入

转载 作者:太空宇宙 更新时间:2023-11-03 21:56:30 24 4
gpt4 key购买 nike

我正在开发一个 Win 8 RT 应用程序,该应用程序必须将一些数据从 Web 服务合并到本地 SQLite 数据库,并且我已经实现了这种方法来仅在事务中更新数据库。

int result;

await MyDatabaseManager.Connection.RunInTransactionAsync(async (connection) =>
{
foreach (Hotel _hotel in listUpdates)
{
result = await connection.UpdateAsync(_hotel);

if (result == 0)
{
await MyDatabaseManager.Connection.InsertAsync(_hotel);
}
}

});

但是,我不知道为什么,当调用 await connection.UpdateAsync(_hotel); 时,它会中断 for bucle,并退出函数而不抛出任何异常或返回任何错误。

如果我评论 RunInTransactionAsync 行,一切正常。

有什么想法吗??

提前致谢。

最佳答案

library you're using没有最好的 async支持(参见 should I expose asynchronous wrappers for synchronous methods 了解该方法存在缺陷的原因)。

您需要使用 RunInTransactionAsync(Action<SQLiteConnection>)重载而不是 RunInTransactionAsync (Action<SQLiteAsyncConnection>) .应该这样做(在升级到最新版本的 sqlite-net 之后):

await MyDatabaseManager.Connection.RunInTransactionAsync((SQLiteConnection connection) =>
{
foreach (Hotel _hotel in listUpdates)
{
result = connection.Update(_hotel);

if (result == 0)
{
connection.Insert(_hotel);
}
}
});

关于c# - Win RT SQLite 事务性插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com