c# - SaveChanges() 前新添加的 Entity 的 Id

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

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

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/

相关文章:

c# - OnClick回调认为它是一个javascript函数?

c# - ASP .NET Core 路由到外部程序集中的 Controller

c# - 一般从 Entity Framework 返回一个项目

asp.net-mvc-2 - MemCached vs Redis for ASP.NET 和 Entity Framework ?

c# - 使用 Entity Framework 代码优先创建表、运行时

c# - 自动递增属性不是关键

c# - 如何将数据集转换为强类型对象?

entity-framework - 将 Entity Framework 与 SQL Compact 私有(private)安装一起使用

entity-framework - EF 4.3 Code First 迁移 - 每次迁移的种子

c# - 如何在多个模型中使用同一张表?