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

发布于 2024-11-07 17:27:05 字数 349 浏览 0 评论 0原文

我将一个实体添加到我的数据库中,如下所示:

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

但是,DbSet.Add 方法不会返回带有 Id 等的新添加的实体,它只是返回我传递给我的 <代码>添加方法。

它应该向我传回包含 Id 的完整新实体,还是在调用 SaveChanges() 之前无法获取 Id

I am adding an entity to my database like so:

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

However, the DbSet.Add method isn't returning the newly added entity with the Id etc, it is simply returning the object I passed in to my Add method.

Should it be passing me back the complete new entity including Id, or is it not possible to get the Id before SaveChanges() is called?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱*していゐ 2024-11-14 17:27:05

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

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

因此,为了证实您的怀疑,不 - 在这种情况下,在调用 SaveChanges() 之前不可能获取 Id。

希望这有帮助!

All the call to Add() is doing is effectively registering it with the data context so that the entity can be tracked. No actual operation is done against the database at this time until (as you rightly mention) you call SaveChanges().

I'm assuming that you're using automatically-generated Ids in your table; in this case, it's the database engine which will generate that Id when the record is inserted, and Entity Framework will read this back and populate your entity for you.

So, to confirm your suspicions, no - it's not possible to get the Id before SaveChanges() is called in this case.

Hope this helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文