我正在向我的数据库中添加一个实体,如下所示:
public TEntity Add(TEntity entity)
{
return (TEntity)_database.Set<TEntity>().Add(entity);
}
但是,DbSet.Add
方法并没有返回新添加的带有 Id 等的实体,它只是返回我传入到我的 Add
方法中的对象.
它应该将包括 Id
在内的完整新实体传给我,还是不可能在 SaveChanges()
之前获取 Id
叫什么?
最佳答案
所有对 Add()
的调用都在有效地将其注册到数据上下文,以便可以跟踪实体。在调用 SaveChanges()
之前(正如您正确提到的那样),此时不会对数据库执行任何实际操作。
我假设您在表格中使用自动生成的 ID;在这种情况下,数据库引擎将在插入记录时生成该 Id, Entity Framework 将读回它并为您填充您的实体。
因此,为了证实您的怀疑,不 - 在这种情况下调用 SaveChanges()
之前不可能获得 Id。
希望这对您有所帮助!
关于c# - SaveChanges() 前新添加的 Entity 的 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029711/