repository.InsertAsync всегда возвращает entity.Id 0 - PullRequest
0 голосов
/ 29 января 2019

Иногда мне нужно Id вставленной сущности.Чтобы добиться этого, я использую:

entity = await _repository.InsertAsync(entity);

При этом entity.Id всегда равно 0. Из-за этого я добавляю строку ниже.

await CurrentUnitOfWork.SaveChangesAsync();

Если я добавлюэту строку я могу получить Id.Но этот путь кажется мне грязным.Есть ли другой способ?Или этот путь уже правильный?Я просто хочу быть уверен.Я хочу знать, что использование CurrentUnitOfWork не вызовет проблем, о которых я не знаю.Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Существует InsertAndGetIdAsync, когда вам явно требуется Id.

var entityId = await _repository.InsertAndGetIdAsync(entity);
0 голосов
/ 29 января 2019

Если это столбец Identity из БД, где идентификатор генерируется автоматически, вы не можете получить значение Id, пока строка не будет сохранена в БД.

Вот почему вам нужно выполнить SaveChangesAsync.Прежде чем вы это сделаете, объект находится в памяти, но еще не сохранен в БД, где для него будет назначен Id.

...