Модульное тестирование EF Core Postgrest с sqlite и текстовым полем [] - PullRequest
0 голосов
/ 09 октября 2019

Я использую Postgres с EF Core, и у меня настроена котельная плита

   services.AddEntityFrameworkNpgsql().AddDbContext<CommonContext>(options => options.UseNpgsql(connectionString));

Я использую sqlite для модульного тестирования, и все шло хорошо, пока я не добавил текстовое поле [] в одно из полей. таблицы в базе данных.

Поля работают нормально для производства, но модульные тесты не проходят, я подозреваю, из-за причин SQLite

System.InvalidOperationException : The property 'Plan.Description' could not
be mapped, because it is of type 'string[]' which is not a supported 
primitive type or a valid entity type. Either explicitly map this property, 
or ignore it using the '[NotMapped]' attribute or by using 
'EntityTypeBuilder.Ignore' in 'OnModelCreating'.

Однако это предложение исправит мои модульные тесты, но данные не будутизвлечено.

public class Plan
{
   ...
   public string[] Description { get; set; }

}

public class PlanConfiguration : IEntityTypeConfiguration<Plan>
{
    public void Configure(EntityTypeBuilder<Plan> builder)
    {
        ...
        builder.Property(p => p.Description);
    }
}

Структура таблицы

CREATE TABLE IF NOT EXISTS "Plan"
(
  ...
  "Description" text[] NULL,
);

Мой модульный тест выглядит как

var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();

...

var options = new DbContextOptionsBuilder<CommonContext>()
    .UseSqlite(connection)
    .Options;

using (var context = new CommonContext(options))
{
    context.Database.EnsureCreated();
}

using (var context = new CommonContext(options))
{

    context.Plan.Add(new Plan {Description = new []{"Dont really care about description for testing anyway"}});
}


using (var context = new CommonContext(options))
{
    Assert.Equal(...);
}

...

Как я могу использовать поле text [] dbотображается в строку [] в классе ac #, обеспечивая при этом выборку данных во время выполнения и продолжение работы модульных тестов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...