SaveChanges()之前新添加的实体的ID

时间:2011-05-17 10:46:57

标签: c# entity-framework-4 ef-code-first

我正在向我的数据库中添加一个实体,如下所示:

public TEntity Add(TEntity entity)
{
     return (TEntity)_database.Set<TEntity>().Add(entity);
}

但是,DbSet.Add方法没有返回带有Id等的新添加的实体,它只是将我传入的对象返回到我的Add方法。

它是否应该将包括Id在内的全新实体传回给我,还是在调用Id之前无法获得SaveChanges()

1 个答案:

答案 0 :(得分:18)

Add()的所有调用正在有效地将其与数据上下文一起注册,以便可以跟踪实体。目前没有对数据库进行实际操作,直到(正如您提到的那样)您致电SaveChanges()

我假设您在表中使用自动生成的ID;在这种情况下,它是数据库引擎,它将在插入记录时生成该Id,并且实体框架将读回来并为您填充实体。

因此,为了确认您的怀疑,不 - 在这种情况下调用SaveChanges()之前无法获取ID。

希望这有帮助!