Можно ли создать базу данных в памяти с помощью SQLite.Net-PCL?
В настоящее время я работаю над модульными тестами для приложения Xamarin MvvmCross с использованием SQLite.Net-PCL 3.1.1. Проект модульного тестирования - это обычный проект.NET.
Так что теперь я издеваюсь MvxSqliteConnectionFactoryBase
public class MockMvxSqliteConnectionFactoryBase : MvxSqliteConnectionFactoryBase
{
#region implemented abstract members of MvxSqliteConnectionFactoryBase
public override string GetPlattformDatabasePath(string databaseName)
{
return "Data Source=:memory:";
}
public override ISQLitePlatform GetCurrentPlatform()
{
return new SQLite.Net.Platform.Generic.SQLitePlatformGeneric();
}
public override ISQLitePlatform GetCurrentPlatform(string key)
{
return new SQLite.Net.Platform.Generic.SQLitePlatformGeneric();
}
#endregion
}
Но база данных создается не в памяти, а в bin
папка проекта.
Я пытался инициализировать SQLiteConnection
как в этом примере, но нет конструктора, который принимает только одну строку.
1 ответ
Решение
Следуя подсказке, что @CL. дал мне я изменил метод GetPlattformDatabasePath:
public override string GetPlattformDatabasePath(string databaseName)
{
return ":memory:";
}
Теперь я не вижу, чтобы что-то создавалось в папке bin, и нет необходимости удалять существующие данные после каждого запуска модульного теста, поэтому база данных должна находиться в памяти.