gpt4 book ai didi

c# - 在调用 SaveChanges 之前从 EF 集合中获取对象

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:02 25 4
gpt4 key购买 nike

使用 Entity Framework ,我有一个名为 WorkSet 的表。我向其中添加一个项目,如下所示:

_entity.WorkSet.AddObject( new WorkSet() { Name = "Something" } );

在此之后查询表时,我没有收到任何结果。

_entity.WorkSet.Count() == 0 // always true

也就是说,直到我调用 SaveChanges。我理解为什么这是它的工作方式,但我想知道如何在通过 SaveChanges 将它们保存到数据库之前查看实体中的更改。我希望这是一个可以快速解决的简单问题。谢谢!!

最佳答案

_entity.WorkSet 实现了IQueryable,因此调用Count() 将导致一个sql 查询。在您调用 SaveChanges 之前,数据库中没有任何记录,因此它将返回 0。如果您想在保存更改之前引用添加的对象,请使用此代码:

_entity.WorkSet.Context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Unchanged).Where(e => e.Entity is WorkSet).Select(e => e.Entity as WorkSet).Count();

我想,您使用的是 EF 1,如果您移动到较新的版本,则有一个更简单的解决方案:

_entity.WorkSet.Local.Count();

关于c# - 在调用 SaveChanges 之前从 EF 集合中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com