gpt4 book ai didi

c# - 在单个查询中从 CosmosDb 中获取多种类型的实体

转载 作者:行者123 更新时间:2023-12-05 07:32:15 25 4
gpt4 key购买 nike

我正在尝试使用 sql API 从 CosmosDb 中的集合中获取所有类型的实体。但我只得到 BaseClass实体而不是特定的类实体。

这是我的模型:

public class ActivityBase: { // common properties for all activities... }
public class Running: ActivityBase { // specific properties to Running... }
public class Dancing: ActivityBase { // specific properties to Dancing... }

这是当前的查询:

 var query = Client.CreateDocumentQuery<ActivityBase>(collection.SelfLink, feedOptions)
.Where(/*some filter which does not exclude entities by ActivityType*/)
.AsDocumentQuery();

我最终得到的是 List<ActivityBase> .

我需要的是 List<ActivityBase>其中包含特定实体,如 Running , Dancing而不仅仅是基类对象。有没有办法在查询本身中指定它?

最佳答案

CreateDocumentQuery 中的T 类型只是告诉 SDK 将检索到的对象映射到哪里,而不是要查询哪些对象。那部分进入过滤器。

如果您的过滤器没有将查询范围缩小到 RunningDancing 类型,那么此查询所做的就是检索任何类型的对象,然后将其映射到ActivityBase。这意味着即使您正在查询正确的类型,您也永远不会看到它们,因为映射器将忽略它们。

您可以通过将 T 类型更改为 dynamicDocument 并检查内容来快速检查。

关于c# - 在单个查询中从 CosmosDb 中获取多种类型的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com