【问题标题】:convert object to DocumentDb Document in .Net Core在 .Net Core 中将对象转换为 DocumentDb 文档
【发布时间】:2017-11-02 19:59:38
【问题描述】:

我有以下代码,它根据其模型接收一个员工类型的对象,我想将其转换为 DocumentDB 文档,然后发布到数据库。 我将如何进行转换?

[HttpPost]
        public async Task Post([FromBody]Employee employee)
        {
            using (_logger.BeginScope("Post employee"))
            {
                try
                {
                    // convert employee to Document??
                    await _documentDbRepository.CreateItemsAsync(document);
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);
                    throw;
                }

            }
        }

【问题讨论】:

  • CreateItemsAsync 的签名是否明确要求您传入Document?这似乎是您对实际 DocumentClient 的一些自定义抽象,它能够获取几乎任何 object 并使用默认 JSON 序列化将其插入 Cosmos
  • CreateItemsAsync 目前确实需要 Document,所以您的意思是它可以接受类型“对象”,无论它是 Document 还是基于模型的自定义对象,这都可以工作?
  • 什么是_documentDbRepository?这听起来像是您在顶部构建的自定义层。如果它是为 Document 硬编码的,那么你现在必须尊重它。常规 DocumentClient 可以接受任何对象,而不仅仅是 Documents。
  • 将其更改为在对象中接受,因此只要我为传入的每个事物创建一个新的 id guid,它就可以正常工作。如果您想将原始评论作为答案,我会接受,谢谢

标签: azure-cosmosdb asp.net-core-2.0 document-database


【解决方案1】:

您似乎在常规 Cosmos 库之上使用了一个自定义层,该层被硬编码为仅接受 Document。 Microsoft 提供的库能够插入任何通用对象,并将使用默认的 JSON 序列化在插入时将其转换为文档。将自定义存储库上的签名更改为接受 Object 而不是 Document 应该会让您畅通无阻。

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 2020-12-04
    • 2018-04-21
    • 2011-06-03
    • 2020-06-30
    • 2010-12-07
    • 1970-01-01
    • 2020-07-05
    相关资源
    最近更新 更多