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

在Ardalis Specification中从CosmosDB返回基类并转为子类的问题

问题:CosmosDB结合Ardalis Specification处理继承实体类型转换

场景与需求

我的CosmosDB集合中存在两个继承自同一基类的实体类型,希望通过Ardalis Specification查询返回基类对象,且这些对象能被转换为对应的具体子类。当前使用CosmosDB SDK,未使用EF。

期望实现的代码示例

class BaseClass
{
   string Id;
}

class ClassA : BaseClass
{
    string Status;
}

class ClassB : BaseClass
{
    string Amount;
}

public class MySpec : Specification<BaseClass>
{
    public MySpec() 
    {
        Query.Select(x =>
            x is ClassA
                ? new ClassA { Id = x.Id, Status = x.Status }
                : new ClassB { Id = x.Id, Amount = x.Amount }
        );
    }
}

后续期望执行的操作

var list = _repository.List(new MySpec());

foreach(var item in list)
{
    if(item is ClassA)    
    { 
        // 处理ClassA逻辑
    }
}

已尝试的方案及问题

  • 直接返回基类实例:使用Query.Select(new BaseClass(){...}),但返回的对象无法转换为对应的子类。
  • 尝试EF风格的实体配置:使用builder.HasBaseType<BaseClass>();,但CosmosDB SDK不支持该配置方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:30:04