【发布时间】:2019-05-15 21:26:42
【问题描述】:
我们将 EF Core MySQL (Pomelo) 用于 .NET Core 项目,并且我们有一个使用 SQLite 内存数据库的 xUnit 测试设置。我们正在配置一个在 MySQL 中可以正常工作但在我们的测试中不起作用的 JSON 列。正如您在下面看到的,我们尝试在测试期间添加一个 ValueConverter,以使 SQLite 将 JsonObject 视为字符串,但它似乎被完全忽略了。我们还尝试将列类型强制为“varchar(MAX)”。
class FooBar
{
[Column(TypeName = "json")]
public JsonObject<Dictionary<string, object>> Foo { get; set; }
}
class FooBarDbContext : DbContext
{
public DbSet<FooBar> FooBars { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
// only during testing.
builder.Entity<FooBar>().Property(fooBar => fooBar.Foo).HasConversion(
v => v.ToString(),
v => new JsonObject<Dictionary<string, object>>(v)).HasColumnType("varchar(MAX)");
}
}
如何让 SQLite 使用 JsonObject 字段?
【问题讨论】:
标签: c# mysql json sqlite asp.net-core