我正在向我的数据库中添加一个实体,如下所示:
public TEntity Add(TEntity entity)
{
return (TEntity)_database.Set<TEntity>().Add(entity);
}
但是,DbSet.Add
方法没有返回带有Id等的新添加的实体,它只是将我传入的对象返回到我的Add
方法。
它是否应该将包括Id
在内的全新实体传回给我,还是在调用Id
之前无法获得SaveChanges()
?
答案 0 :(得分:18)
对Add()
的所有调用正在有效地将其与数据上下文一起注册,以便可以跟踪实体。目前没有对数据库进行实际操作,直到(正如您提到的那样)您致电SaveChanges()
。
我假设您在表中使用自动生成的ID;在这种情况下,它是数据库引擎,它将在插入记录时生成该Id,并且实体框架将读回来并为您填充实体。
因此,为了确认您的怀疑,不 - 在这种情况下调用SaveChanges()
之前无法获取ID。
希望这有帮助!