有时我需要插入Id
个实体。为此,我使用:
entity = await _repository.InsertAsync(entity);
有了这个,entity.Id
始终为0。因此,我在下面添加了一行。
await CurrentUnitOfWork.SaveChangesAsync();
如果我添加这一行,我可以得到Id
。但是,这种方式对我来说似乎很肮脏。还有另一种方法吗?还是这种方式已经正确?我只想确定。我想知道使用CurrentUnitOfWork
不会引起我可能不知道的问题。谢谢。
答案 0 :(得分:2)
当您明确需要InsertAndGetIdAsync
时,会有Id
。
var entityId = await _repository.InsertAndGetIdAsync(entity);
答案 1 :(得分:1)
如果它是从数据库,其中自动生成的ID标识列,直到该行被存储在DB你不能得到的ID值。
这就是为什么您需要执行SaveChangesAsync的原因。在执行此操作之前,对象已在内存中,但尚未存储在数据库中,这是将为该对象分配ID的位置。