我正在尝试使用sql API从CosmosDb中的集合中获取所有类型的实体。但是我只得到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
,table
之类的特定实体,而不仅仅是基类对象。是否可以在查询本身中指定此方法?
答案 0 :(得分:0)
T
中的CreateDocumentQuery
类型只是告诉SDK在哪里映射检索到的对象,而不是要查询的对象。那部分进入过滤器。
如果您的过滤器没有将查询范围缩小到Running
和Dancing
类型,那么此查询将要做的就是检索任何类型的对象,然后将其映射到ActivityBase
。这意味着即使您正在查询正确的类型,您也将永远不会看到它们,因为映射器将忽略它们。
您可以通过将T
类型更改为dynamic
或Document
并检查内容来快速检查。