Я использую 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 #, обеспечивая при этом выборку данных во время выполнения и продолжение работы модульных тестов?