【问题标题】:Id of newly added Entity before SaveChanges()SaveChanges() 之前新添加的实体的 ID
【发布时间】:2011-05-17 10:46:57
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    Add() 的所有调用都是有效地将其注册到数据上下文中,以便可以跟踪实体。在您调用SaveChanges() 之前(正如您正确提到的),此时没有对数据库执行任何实际操作。

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

    所以,为了确认您的怀疑,不 - 在这种情况下,在调用 SaveChanges() 之前不可能获得 ID。

    希望这会有所帮助!

    【讨论】:

    • 干杯,我认为一定是这样,就我目前的问题而言很烦人,但这是有道理的
    • 如果您能够切换主键类型,您可以使用 GUID 并在发送到数据库之前生成您的 .net 代码。
    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    相关资源
    最近更新 更多