在我的项目中,我想为某些类添加继承并将生成的对象保存到Cosmos DB数据库中的documentcollection中。要保存有关类型的信息,我在JSON.net中使用此首选项:https://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm
但是如何在不使用LINQ以类型安全的方式检索所有文档的情况下按类型查询集合。最好是将一个属性添加到那些名为itertools.product
的类中,该类包含JSON对象的“ $ type”属性的信息。然后,我可以查询如下内容:
Type
此LINQ查询将转换为SQL,然后发送到服务器。我只找回那些汽车类型的东西。这将是最佳选择,这样的事情可能很快吗?
答案 0 :(得分:2)
您只需拥有TEntity
属性即可实现某种接口,就让ICosmosEntity
拥有一个EntityType
属性,该属性是一个字符串。
然后,您所有的TEntity
对象都需要实现此接口,并且它们会将nameof(TEntity)
设置为EntityType
。
这样,您可以使查询的外观像这样:return Client.CreateDocumentQuery<TEntity>(DocumentCollectionUri).Where(entity => entity.EntityType == nameof(Car))
,它将完全返回您需要的内容。
如果您遇到困难,那么我建议您检查collection sharing在Cosmonaut中的工作方式。听起来确实是您需要的东西。
免责声明:我是Cosmonaut的创建者。