repository.InsertAsync始终返回entity.Id 0

时间:2019-01-29 15:08:20

标签: c# asp.net entity-framework-6 aspnetboilerplate

有时我需要插入Id个实体。为此,我使用:

entity = await _repository.InsertAsync(entity);

有了这个,entity.Id始终为0。因此,我在下面添加了一行。

await CurrentUnitOfWork.SaveChangesAsync();

如果我添加这一行,我可以得到Id。但是,这种方式对我来说似乎很肮脏。还有另一种方法吗?还是这种方式已经正确?我只想确定。我想知道使用CurrentUnitOfWork不会引起我可能不知道的问题。谢谢。

2 个答案:

答案 0 :(得分:2)

当您明确需要InsertAndGetIdAsync时,会有Id

var entityId = await _repository.InsertAndGetIdAsync(entity);

答案 1 :(得分:1)

如果它是从数据库,其中自动生成的ID标识列,直到该行被存储在DB你不能得到的ID值。

这就是为什么您需要执行SaveChangesAsync的原因。在执行此操作之前,对象已在内存中,但尚未存储在数据库中,这是将为该对象分配ID的位置。