【问题标题】:Asp.net Core Webapi Azure CosmosDB update entity in different containerAsp.net Core Webapi Azure CosmosDB 更新不同容器中的实体
【发布时间】:2021-02-19 01:15:07
【问题描述】:

我对使用 Azure CosmosDB SQL API 完全陌生。我有一个简单的 asp.net 核心 webapi。我有两个用于 Employer 和 Employee 的容器。员工json数据如下:

{
  "id": "56b2aea8-df9e-41e8-a1d0-6ca77e625284",
  "name": "ABC",
  "employees": [
    {
      "id": "fd3e6a4b1af9xxxx",
      "name": "EMP1",
      "dateAdded": "02/09/2021 12:00:51"
    },
    {
      "id": "ecaa7250xxxx",
      "name": "EMP2",
      "dateAdded": "02/09/2021 13:29:29"
    }
  ]
}

我想创建单独的端点来创建/编辑员工。而员工的json数据是:

{
    "dateOfBirth": "09/05/1976",
    "name": "EMP1Updated",
    "id": "80d9585a-1f6d-4348-b8e0-5d40f9586eb7",
}

我对雇主和雇员都有单独的回购。如果我更改员工姓名,我必须在 Employer 容器中更改相应的员工姓名。我不确定如何实现这一目标。谁能建议我最好的解决方案来做到这一点。员工的更新代码是:

try
        {
            var container = _cc.GetContainer(_databaseId, _employeeDataContainerName);

            var sqlQueryText = "SELECT * FROM c WHERE c.id = @EmployeeId";
            var queryDefinition = new QueryDefinition(sqlQueryText).WithParameter("@EmployeeId", id);
            var queryResultSetIterator =
                container.GetItemQueryIterator<EmployeeRecord>(queryDefinition);

            var currentResultSet = await queryResultSetIterator.ReadNextAsync();

            var firstRecord = currentResultSet.FirstOrDefault();
            if (firstRecord == default)
            {
                var message = $"Unable to find any employee for the given ID ({id})";
                throw new Exception(message);
            }
            var docToWrite = Mapper.MapToEmployeeRecord(employeeModel, learnerEntity.Id);
            await container.UpsertItemAsync(docToWrite, new PartitionKey(id.ToString()));
        }

谢谢

【问题讨论】:

标签: c# azure-cosmosdb asp.net-core-webapi


【解决方案1】:

保持两个容器之间的引用完整性的方法是使用更改提要。使用更改提要监视一个容器,然后在更新项目时,您可以调用一个函数来查询您的员工容器并在其上调用 ReplaceItemAsync()。你可以了解更多here

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    相关资源
    最近更新 更多