How to use SQLiteAsyncConnection from the async PC

2019-03-18 03:43发布

问题:

I'm using a PCL version of Sqlite.net from https://github.com/oysteinkrog/SQLite.Net-PCL

However, I'm unable to get the DB connection setup. The SQliteAsyncConnection does unlike the original version not take a string (path to the DB), but a [Func< SQLiteConnectionWithLock>.]2

How can this be used? In general: how to use this library? I have a core PCL lib which does all the business logic from my iOS, Android and WP8 projects. My understanding was that I can drop the the Sqlite-Net Async PCL into my PCL lib. But it seems like I have to provide some platform specific stuff to get it to work.

回答1:

You just need to create a function that returns a SQLiteConnectionWithLock and pass that to the SQLiteAsyncConnection constructor.

string databasePath = "path";
var connectionFactory = new Func<SQLiteConnectionWithLock>(()=>new SQLiteConnectionWithLock(new SQLitePlatformWinRT(), new SQLiteConnectionString(databasePath, storeDateTimeAsTicks: false)));
var asyncConnection = new SQLiteAsyncConnection(connectionFactory);


回答2:

I've had problems with this too. To meet Johnbot's answer which is correct I am adding how I have used this library and got it to work. I did not really understand the NuGet packages, so I did it manually.

  1. Download the project https://github.com/oysteinkrog/SQLite.Net-PCL

  2. Load the solution in VS2015, set to release mode and create the dlls for:

a) SQLite.Net

b) SQLite.Net.Async

c) SQLite.Net.Platform.WinRT which is for Windows 10 universal apps, or the platform you need.

Ensure you have these references in your project.

SQLIte for Universal App is installed from VS Tools / Extensions and Updates. Once installed it is referenced under Universal Windows / Extensions along with the Visual C++ 2015 which is also required.

Good luck!