我正在尝试使用 table-per-hierarchy 模式存储表,但不是每个派生字段的列,而是将其存储为 json。我只是在 .net 实体框架核心文档中的继承部分做示例,如下所示:
class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<RssBlog>().HasBaseType<Blog>();
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
public class RssBlog : Blog
{
public string RssUrl { get; set; }
}
这可以正常工作并将每个属性存储为一列,如下面的屏幕截图所示:
我想要实现的是将属性存储为 json 列而不是多个列。它可能看起来像这样:
| BlogId | Discriminator | json |
|--------|---------------|-----------------------------------------------------------------------------------------------|
| 1 | Blog | {"Url": "http://blogs.msdn.com/dotnet"} |
| 2 | RssBlog | {"Url": "http://blogs.msdn.com/adonet", "RssUrl": "http://blogs.msdn.com/b/adonet/atom.aspx"} |
主要思想是我想将一个类型的继承对象存储到同一个表中,正如 TPH 模式所允许的那样,但使用 json 列而不是多个列。
这可以在 EF Core 2.2 中实现吗?