documentDB使用集合和文档到对象

时间:2017-02-05 21:36:55

标签: c# azure-cosmosdb

我有ObjectModel,其中包含2个类Student和Course。

我想使用documentDB保存2个集合(一个集合用于课程,一个用于学生) 我需要在documentDB DB中创建2个不同的集合? ,或者我可以只使用一个收藏品?

当我想从文档转换为ObjectModel.Student时,另一个问题,我不想使用动态转换(实时性能问题)。

public static async Task<ObjectModel.Student> GetGroupAsyncByID(string id)
    {
        try
        {
            Document document = await _client.ReadDocumentAsync(UriFactory.CreateDocumentUri(cDatabaseId, cAllCollections[0], id));
            return (ObjectModel.Student)document; // compile error 
        }
        catch (DocumentClientException e)
        {
            if (e.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                return null;
            }
            else
            {
                throw;
            }
        }
    }

我的学生班

public class Student 
    {
        #region Fields
        [JsonProperty(PropertyName = "id")]
        public string ID { get; set; }
        public String StudentName { get; set; }

}

我如何从Doucment投射到Student对象?

谢谢!

1 个答案:

答案 0 :(得分:0)

DocumentDB是模式激发的,是的,您可以将Course和Student对象保存在一个集合中。要轻松告诉文档应该转换为哪个类,您可以定义,例如,&#34; Type&#34;两个对象中的属性,1表示Course对象,2表示Student对象。

Document对象实现动态合约。您可以按学生s =(动态)文档转换为Student。这里的性能含义非常小,因为文档已经包含了JSON对象的PropertyBag,它只会设置&#34; Student&#34;的属性。到PropertyBag中的值。

如果您想自己处理这个问题,ResourceResponse还会公开原始流,以便您可以处理自己的反序列化。