Я работаю над новым API для моей игры, используя NetCore 3 Entity Framework. Я создал весь код и создал свою базу данных с помощью команды scaffolding Scaffold-DbContext. Я все еще использую старую базу данных, потому что она массивна, и я не хочу с ней связываться.
В моем новом API я создал метод POST для одного из моих контроллеров.
Я хочу, чтобы API сгенерировал новый guid для столбца первичного ключа DungeonId.
После поиска / исследования я подумал, что нашел простой ответ, который просто сделал это для моей модели:
[Key]
public Guid DungeonId { get; set; } = Guid.NewGuid();
Я думал, что я умный и умный, но я не такой.
Потому что, как я вижу сейчас, он будет генерировать новый guid каждый раз, когда я пытаюсь использовать модель в GET, PUT, или DELETE запрос.
Что, очевидно, не будет работать.
Итак, я переместил новое поколение Guid в метод POST в моем контроллере следующим образом:
// POST: api / DungeonsList [HttpPost] publi c asyn c Task> PostDungeonList (DungeonList dungeonList) {
dungeonList.DungeonId = Guid.NewGuid();
_context.DungeonList.Add(dungeonList);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (DungeonListExists(dungeonList.DungeonId))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtAction("GetDungeonList", new { id = dungeonList.DungeonId }, dungeonList);
}
На этот раз, похоже, работает. Он генерирует новый Guid, когда POST новое подземелье, и использует существующий dungeonId при обновлении или удалении.
ОДНАКО процесс POST, кажется, занимает около 2 секунд дольше.
Я не уверен почему добавление метода Guid.NewGuid () может сделать это, но, похоже, это так.
Так что я не должен делать это правильно.
Есть ли другое место, где я должен быть создание нового guid?
Спасибо!