3

我正在尝试使用 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>包含特定实体的RunningDancing而不仅仅是基类对象。有没有办法在查询本身中指定它?

4

1 回答 1

0

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

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

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

于 2018-07-15T09:01:23.850 回答