Xamarin.Forms с использованием SQLite.Net.Async
Я следовал инструкциям здесь http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/databases/ - для синхронного подключения к базе данных SQLite.
public SQLiteConnection GetConnection()
{
var dbFilname = "localDB.db3";
string docsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var path = Path.Combine(docsPath, dbFilname);
var plat = new SQLitePlatformAndroid();
var conn = new SQLiteConnection(plat, path);
return conn;
}
Я хочу изменить его на асинхронное соединение (SQLiteAsyncConnection), но не могу заставить его работать.
Согласно инструкциям здесь - https://components.xamarin.com/gettingstarted/sqlite-net - ему просто нужен путь в качестве параметра
var conn = new SQLiteAsyncConnection(path);
это не работает, ошибка говорит, что ожидаемые параметры:
функция соединения, TaskScheduler и TaskCreationOptions
Я понятия не имею, что делать, и я не смог найти примеры, которые работают.
заранее спасибо
2 ответа
Вы можете просто повторно использовать метод GetConnection, который у вас уже есть, и создать асинхронное соединение следующим образом:
var asyncDb = new SQLiteAsyncConnection(() => GetConnection());
Платформы Xamarin для Android Config, iOS и WP в основном равны
public SQLiteAsyncConnection GetConnectionAsync()
{
const string fileName = "MyDB.db3";
var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsPath, fileName);
var platform = new SQLitePlatformAndroid();
var param = new SQLiteConnectionString(path, false);
var connection = new SQLiteAsyncConnection(() => new SQLiteConnectionWithLock(platform, param));
return connection;
}