У меня есть внешний ресурс API, который мне нужно использовать. API отправляет мне триггер в виде пост-запроса. Что мне нужно сделать, это получить значения и обновить текущую соответствующую запись в SQL. Код, который я придумал, продолжает добавлять новое значение в базу данных.
[HttpPost("status")]
public async Task<IActionResult> Post(CompletionForCreateDto
completionForCreateDto)
{
// che ck the model state
if (!ModelState.IsValid)
return BadRequest(ModelState);
// find the incoming trigger information and map them to the disctionary
var form = Request.ReadFormAsync();
var formData = form.Result;
Dictionary<string, string> ddata = new Dictionary<string, string>();
foreach ( var key in formData.Keys)
{
var value = formData[key.ToString()];
ddata.Add(key, value);
}
// find the existed completion by ID
int id = Int32.Parse(ddata["record"]);
var completion = await repository.GetCompletion(id);
completion = mapper.Map<CompletionForCreateDto, Completion>(completionForCreateDto);
if (completion == null)
return NotFound();
// some test values to make sure it works.
completion.VitalSignBLA = ddata["vital_signs_spring_complete"];
completion.VitalSignBLADateTime = DateTime.Now;
// repository.Add(completion); ==> adds value as a new record
// repository.Update(completion);==> adds value as a new record
repository.Attach(completion); // ==> adds value as a new record
// SaveChanges()
await unitOfWork.CompleteAsync();
return Ok();
}
Вверху, сначала я беру триггер и помещаю их в словарь, чтобы я мог его использовать. Затем я попытался найти существующую запись триггера в моем sql servere, используя их значение record
. * Триггер record
и значение SQL record
являются одинаковыми значениями. После этого я использую некоторые данные, чтобы проверить это. Наконец, я использовал контекст Add
, Update
и Attach
для обновления базы данных SQL. Во всех случаях запрос на публикацию сохраняется с добавлением новой строки.
Я новичок в ядре dotnet. Я не уверен в этом, потому что я использовал атрибут HttpPost
или сам код. Любая помощь будет оценена!