如何在Xamarin Forms PCL中的事务中使用SQLITE异步扩展?

比尔

我试图弄清楚如何在事务中使用SQLITE异步扩展方法,例如InsertOrReplaceWithChildrenAsync(来自TwinCoders的NuGet)。

在Xamarin.Forms PCL中启动时,我有:

using Xamarin.Forms;
using SQLite.Net;
using SQLite.Net.Async;
using SQLiteNetExtensions;
using SQLiteNetExtensionsAsync.Extensions;
...
...
static SQLiteAsyncConnection db;
db = DependencyService.Get<ISQLite> ().GetAsyncConnection ();

附带说明一下,我还可以执行以下操作,但我没有做到这一点,因为已阅读到混合同步和异步数据库操作是不明智的:

dbSync = DependencyService.Get<ISQLite> ().GetSyncConnection ();

我的第一个想法是:

await db.RunInTransactionAsync ( 
    ( SQLite.Net.Async.SQLiteAsyncConnection tran ) => 
        { tran.InsertAll WithChildren ( ...); ... }

但这在构建时会收到以下警告:

... RunInTransactionAsync(Action<SQLiteAsyncConnection> ... will 
cause a deadlock if .... 
Use RunInTransactionAsync(Action<SQLiteConnection>) instead.

如果我在事务中使用同步方法,那么以下方法确实有效:

await db.RunInTransactionAsync ( ( SQLite.Net.SQLiteConnection tran ) =>
{
    var x = new X();
    tran.Insert (x);
    var y = new Y();
    tran.Insert (y);
});

但是,tran仅具有常规的同步方法,并且不提供任何扩展方法,例如InsertOrReplaceWithChildren。

我的搜索没有找到有关如何在事务中访问扩展方法的任何信息。

如果我如上所述获得dbSync,则dbSync不提供扩展方法。也许与问题有关。在我的同伴IOS项目中,我有:

using Xamarin.Forms;
using SQLite.Net;
using SQLite.Net.Async;
using SQLite.Net.Platform.XamarinIOS;
...
...
public class Conn : Xyz.ISQLite
{
    ...
    public SQLite.Net.SQLiteConnection GetSyncConnection () { ... }
    public SQLiteAsyncConnection GetAsyncConnection() { ... }
    ...
}

似乎添加异步包会以某种方式阻止同步扩展。但是,添加仅具有同步SQLite.Net和同步扩展名的PCL帮助程序类库并从那里获取同步连接没有帮助。

比尔

吉列尔莫·古铁雷斯·多拉尔(GuillermoGutiérrezDoral)解决了以下问题:

“由于SQLite.Net异步的特性,事务内部仅支持同步操作。否则,即使事务不在事务块内部,事务开始和结束之间的任何失败操作也可能使事务回滚这不是SQLite-Net扩展的限制,而是SQLite.Net的一个限制。您仍然可以访问所有SQLite-Net扩展的同步操作,例如InsertOrReplaceWithChildren。”

https://bitbucket.org/twincoders/sqlite-net-extensions/issue/61/async-extension-methods-within-a

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Xamarin Forms PCL中使用本机Android ImageView?

来自分类Dev

如何在MainPage()(Xamarin Forms)中使用异步

来自分类Dev

Xamarin Forms:如何在PCL Project中使用嵌入式资源获取图像

来自分类Dev

如何在 Xamarin.forms 中使用浮动操作按钮与 PCL 项目表单代码共享?

来自分类Dev

如何在Xamarin.Forms UWP中使用图片?

来自分类Dev

如何在Xamarin.Forms中使用Android控件

来自分类Dev

如何在Xamarin.Forms中使用Mapsui 2.0.1?

来自分类Dev

如何在 Xamarin Forms 的 Prism 中使用 EventToCommandBehavior 获取 ItemTappedEventArgs

来自分类Dev

如何在 Xamarin.Forms 中使用 Wifimanager.LocalOnlyHotspotCallback

来自分类Dev

如何在Xamarin.Forms中强制使用灯光模式?

来自分类Dev

如何在Xamarin.Forms中的网格中启用边框

来自分类Dev

如何在xamarin.forms中旋转页面

来自分类Dev

如何在Xamarin.Forms中访问TableView的子级

来自分类Dev

如何在Xamarin Forms中处理屏幕旋转/方向?

来自分类Dev

如何在Xamarin.Forms中隐藏Android ActionBar?

来自分类Dev

如何在Xamarin.Forms中获取/检测屏幕尺寸?

来自分类Dev

如何在Xamarin.Forms中设置控件的宽度

来自分类Dev

如何在Xamarin.Forms中检测设备的屏幕方向?

来自分类Dev

如何在xamarin.forms中旋转页面

来自分类Dev

如何在Xamarin Forms中处理/取消向后导航

来自分类Dev

如何在iOS的Xamarin Forms中创建导航栏?

来自分类Dev

如何在Xamarin.Forms中重定向

来自分类Dev

如何在Xamarin.Forms中显示“向上” /“返回”按钮?

来自分类Dev

如何在Xamarin.Forms中登录Facebook

来自分类Dev

如何在iOS中设置Xamarin.Forms SearchBar的样式?

来自分类Dev

如何在Xamarin.Forms中调整Horizontal ListView的大小?

来自分类Dev

如何在Xamarin Forms中的条目上添加视觉前缀?

来自分类Dev

如何在Xamarin Forms StackLayout中居中嵌套内容?

来自分类Dev

如何在Xamarin.Forms中绑定Picker

Related 相关文章

  1. 1

    如何在Xamarin Forms PCL中使用本机Android ImageView?

  2. 2

    如何在MainPage()(Xamarin Forms)中使用异步

  3. 3

    Xamarin Forms:如何在PCL Project中使用嵌入式资源获取图像

  4. 4

    如何在 Xamarin.forms 中使用浮动操作按钮与 PCL 项目表单代码共享?

  5. 5

    如何在Xamarin.Forms UWP中使用图片?

  6. 6

    如何在Xamarin.Forms中使用Android控件

  7. 7

    如何在Xamarin.Forms中使用Mapsui 2.0.1?

  8. 8

    如何在 Xamarin Forms 的 Prism 中使用 EventToCommandBehavior 获取 ItemTappedEventArgs

  9. 9

    如何在 Xamarin.Forms 中使用 Wifimanager.LocalOnlyHotspotCallback

  10. 10

    如何在Xamarin.Forms中强制使用灯光模式?

  11. 11

    如何在Xamarin.Forms中的网格中启用边框

  12. 12

    如何在xamarin.forms中旋转页面

  13. 13

    如何在Xamarin.Forms中访问TableView的子级

  14. 14

    如何在Xamarin Forms中处理屏幕旋转/方向?

  15. 15

    如何在Xamarin.Forms中隐藏Android ActionBar?

  16. 16

    如何在Xamarin.Forms中获取/检测屏幕尺寸?

  17. 17

    如何在Xamarin.Forms中设置控件的宽度

  18. 18

    如何在Xamarin.Forms中检测设备的屏幕方向?

  19. 19

    如何在xamarin.forms中旋转页面

  20. 20

    如何在Xamarin Forms中处理/取消向后导航

  21. 21

    如何在iOS的Xamarin Forms中创建导航栏?

  22. 22

    如何在Xamarin.Forms中重定向

  23. 23

    如何在Xamarin.Forms中显示“向上” /“返回”按钮?

  24. 24

    如何在Xamarin.Forms中登录Facebook

  25. 25

    如何在iOS中设置Xamarin.Forms SearchBar的样式?

  26. 26

    如何在Xamarin.Forms中调整Horizontal ListView的大小?

  27. 27

    如何在Xamarin Forms中的条目上添加视觉前缀?

  28. 28

    如何在Xamarin Forms StackLayout中居中嵌套内容?

  29. 29

    如何在Xamarin.Forms中绑定Picker

热门标签

归档