Я создаю базу данных SQLite In Memory для модульного тестирования:
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
try
{
var options = new DbContextOptionsBuilder<BloggingContext>()
.UseSqlite(connection)
.Options;
// Create the schema in the database
using (var context = new BloggingContext(options))
{
context.Database.EnsureCreated();
}
// Run the test against one instance of the context
using (var context = new BloggingContext(options))
{
var service = new BlogService(context);
service.Add("http://sample.com");
}
// Use a separate instance of the context to verify correct data was saved to database
using (var context = new BloggingContext(options))
{
Assert.AreEqual(1, context.Blogs.Count());
Assert.AreEqual("http://sample.com", context.Blogs.Single().Url);
}
}
context.Database.EnsureCreated (); завершается ошибкой с исключением: Сообщение: Microsoft.Data.Sqlite.SqliteException: SQLite Ошибка 1: 'рядом с "MAX": синтаксическая ошибка'. em >
Существует проблема с github, в которой говорится: Проблема здесь в том, что varchar (max) - это SqlServer конкретный тип. Каркас не должен добавлять его как реляционный тип, который передается в миграцию другими поставщиками, которые могут генерировать недопустимый sql при миграции.
Но как тогда я могу использовать SQLite в памяти для модульных тестов, если моя база данных содержит много столбцов varchar (max)?
_offerContext.Set<Aggregate>().FindAsync(id);
, я получаю исключение: typeof (Microsoft.Data.Sqlite.SqliteException): SQLite Error 1: «нет такой таблицы: предложения». ---- Microsoft.Data.Sqlite.SqliteException: ошибка SQLite 1: «нет такой таблицы: предложения». вместо null. Если я передаю идентификатор существующей сущности, он возвращает правильный объект. Но я хочу проверить поведение, когда не нахожу сущность. - person Deivydas Voroneckis   schedule 30.11.2018