You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework Core 7结合多态JSON列的设计是否可行?

关于EF Core 7.0 JSON列实现多态元数据的方案疑问

我正尝试用Entity Framework Core 7.0的JSON列特性解决通用领域问题,结合具体领域实体模型与属性,但不确定当前版本是否支持我的方案:

我有一个共享的Customers服务,大部分实体属性(如名称、地址等)是通用的,但每种实体类型有灵活的元数据列。我希望通过DBContext模型使用这些元数据,并且能针对强类型模型用标准LINQ查询。

查阅文档后发现可以这样映射:

Customer.OwnsOne->VendorMetadata
Customer.OwnsOne->SalespersonMetadata

但这种方式只能逐个处理OwnedType模型,我想要单一服务处理所有多态场景,加载包含元数据子类型的具体类型,却不知道怎么在DBContext中配置,甚至不确定是否可行。

举个例子,我希望按类型区分加载领域实体,以强类型对象访问元数据,同时避免为子类创建带硬编码列的多表继承结构(因为元数据属性有可变性)。我期望的代码逻辑如下:

IEnumerable<Vendor> _vendors = _context.Customers.Where(v => v.CustomerType == 'Vendor').ToList();
// 访问Vendor专属强类型元数据
Console.WriteLine(_vendors.First().Meta.Scheme);

IEnumerable<Salesperson> _salesPersons = _context.Customers.Where(v => v.CustomerType == 'Salesperson').ToList();
// 访问Salesperson专属强类型元数据
Console.WriteLine(_salesPersons.First().Meta.Service);

之前在GitHub上看到过“JSON共享列”的讨论,但因为支持度不足没被纳入EF7或EF8,不确定这是否和我的需求匹配,也想了解有没有可行的替代方案。

内容的提问来源于stack exchange,提问作者watdo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:57:03