我有一个Xamarin应用程序,我在Azure上使用Cosmos DB,在数据库方面,我有这种文档:
{
"_id" : ObjectId("5b84142d07bf8638bcf7a089"),
"business_id" : "5b81309a7dfa952bb4036f55",
"contentType" : "image",
"media" : "https://fimgs.net/images/perfume/375x500.30796.jpg",
"id" : "22155414-ee2b-3191-c180-3bc9d40db16b"
}
在Xamarin端,我使用以下代码:
List<TempObject> TempObjects = new List<TempObject>();
Uri collectionUri = UriFactory.CreateDocumentCollectionUri(_databaseId, _collectionId);
var query = _client.CreateDocumentQuery<TempObject>(collectionUri).AsDocumentQuery();
while (query.HasMoreResults)
{
TempObjects.AddRange( await query.ExecuteNextAsync<TempObject>() );
}
这是数据类定义:
class TempObject
{
//[JsonProperty(PropertyName = "_id")]
//public string _id { get; set; }
[JsonProperty(PropertyName = "business_id")]
public string business_id { get; set; }
[JsonProperty(PropertyName = "contentType")]
public string contentType { get; set; }
[JsonProperty(PropertyName = "media")]
public string media { get; set; }
[JsonProperty(PropertyName = "id")]
public string id { get; set; }
}
问题在于它返回了正确数量的对象,但是所有属性均为空!
已经使用默认设置创建了集合,并且数据库几乎为空,此集合中只有2个文档!
代码似乎完全遵循我找到的所有教程! 主要是这个:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/cosmosdb/consuming
此外,当我将本地CosmosDB模拟器与相同的数据库一起使用时,它可以工作,但在Azure上时却不能工作!这是否意味着我的代码正确并且问题出在Azure方面?
对这个问题有任何想法吗?还是调试此类问题的方法?
谢谢
编辑:我也尝试过Cosmonaut API,这是代码:
var cosmosSettings = new CosmosStoreSettings("soclozecosmosdb", "https://soclozedb.documents.azure.com:443/", "E2ipML2QWNVjWITKhX0K0pn7ooCWxbkEk0xkQIC6QIWQCmMjsLU3D2SRTLaIk0dB3bm4k4mWhlpYYpbgsrk2xw==");
ICosmosStore<TempObject> store = new CosmosStore<TempObject>(cosmosSettings);
var users = store.Query().ToList();
但是,查询返回0个对象!
答案 0 :(得分:0)
如果由于任何原因将数据对象错误地子类化为Document,也会发生类似的问题。没有理由使用CosmosDB SDK。