【发布时间】: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