问题标签 [objectstatemanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
entity-framework - 无法附加分离的实体:“ObjectStateManager 中已存在具有相同键的对象”
我正在尝试将实体附加到 ObjectContext。当我这样做时,会引发以下 InvalidOperationException:
我检查了对象状态管理器并且该项目不存在:
或者看看这个抽象的例子,告诉我它是否有意义:
VB中的答案也受到欢迎。
entity-framework - 使用“包含”查询时,EF 是否检查对象状态管理器中是否已存在对象?
我应该避免在查询中使用 Include,还是可以依赖 EDM,它在创建查询时会从 OSM 中已存在的查询项中排除?
entity-framework - ObjectContext.Refresh()?
如何更新数据存储中的所有脏实体,并将其更改的值重置为原始存储值?
ObjectContext.Refresh方法需要将要刷新的实体作为参数。
asp.net-mvc - 在页面离开时强制删除 ObjectStateManager 条目
我有一个基于巨人肩膀的编辑 RESTful 向导 | 一个使用 ASP.Net MVC 的 RESTful 向导……也许吧?. 该向导有一个 CANCEL 按钮,按下该按钮会触发下面的代码。
现在,为了能够在取消按钮后调用SaveChanges(),我必须从我的 ObjectStateManager 中手动删除向导中的条目。但是,当您通过手动返回主页取消向导时,它会停留在下一次调用 _entities.SaveChanges() 将抛出一个异常,它无法将对象从向导进度保存到数据库,因为它仍然在对象状态。
请注意,在向导的步骤之间,我没有将任何内容保存到数据库中。我将它保持在会话状态,每一步都检索它:
然而,不知何故,inProgressVacancyWizard.Vacancy 确实出现在 ObjectStateManager 中,所以我必须将其删除,否则在为另一个对象调用 _entities.SaveChanges()时,我会收到关于不完整Vacancy模型的错误。
有没有办法解决这个问题?
//edit 经过一番阅读,我发现我的存储库的基础并不好。如发现here。目前我怀疑是否实现同一篇文章中“每个业务事务一个 ObjectContext 实例”中提到的选项。那会是明智之举吗?我想听听更多关于它的信息,因为它将是一个重大的重构。
c# - 实体框架 4(纯 POCO)上的更新操作问题
我有一个用纯 POCO 实现的 Entity Framework 4.0 模型(没有代码生成,没有自跟踪实体,只是普通的旧 CLR 对象)。
现在,这是我在 UI 中执行更新的一些代码:
本质上,我有一个接受强类型 Person 对象的操作方法,我需要更新这个实体。
不会出错,但也不会将更改持久化到数据库中。:(
当我在工作单元的“提交”期间检查EntityState时:
我看到我的实体,带有EntityState.Unchanged。
所以这就解释了为什么它没有被持久化。我的查找、添加、删除操作工作正常(正确保留)。但 UPDATE 似乎不起作用。
我发现一些线程说我需要手动设置对象状态:
那是对的吗?我会把这个逻辑放在哪里?公开为我的工作单元上的操作?
显然问题是我没有更改跟踪,因为使用了 Pure POCO(没有 EntityObject 派生,没有 INotifyPropertyChanging 实现)。
但是直到现在我还没有发现它的问题。
我究竟做错了什么?
asp.net - EntityDataSource Null 更新参数未标记为已修改
我在 VB.NET 应用程序上使用带有 FormView 的 EntityDataSource。FormView 包含一个带有多个选项卡的 AjaxControlToolKit TabContains。由于每个选项卡都是一个命名容器,因此 Bind 无法正常更新值(从阅读 stackoverflow 上的其他帖子中发现)。相反,我必须在我的 EntityDataSource 上声明 UpdateParameters。示例标记如下:
这很好用,直到编辑客户并将其名称设置为空(假设在这种情况下,允许使用空名称)。Name UpdateParameter 设置为 Null,但 ObjectStateEntry 未设置为针对 Null 属性进行修改,即使之前实体具有指定的值。只要将名称更改为 Null 以外的名称,所有内容都会正确更新。
我通过将以下代码放入 EntityDataSource 的更新事件中找到了一种解决方法。
这可确保 UpdateParameters 中的每个属性都将其状态设置为已修改。它有效,但它看起来像一个黑客,我可以看到它会导致问题。还有什么我可以做的吗?
entity-framework - 如何在 EF 4.1 中遍历我的 dbcontext 实体?
我正在使用 ASP.NET 实体框架 4.1 MVC 3 (C#)
我想遍历我的 DbContext 中的所有实体。我需要能够动态引用我的实体才能制作动态视图。
我读过 Lerman 的书、两本 MVC(2 和 3)书、msdn、asp.net 等。也许我只是遗漏了一些东西?
似乎您可能必须使用 ObjectContext 才能访问实体。如果这是正确的方法,我肯定不知道该怎么做。请帮忙。谢谢你。
ef-code-first - 实体框架代码优先 DBContext ObjectStateManager 错误
我收到一个错误“ An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.
”
我知道当我调用 CheckIfNameChanged(TestObject testObject) 方法时,我向 ObjectContext 添加了一个实体键,当我调用 _unitOfWork.TestObjectRepository.Update(testObject) 时附加或编辑代码:
这是发生冲突的地方,我在 ObjectStateManager 中有两个相同的实体键。有没有办法解决这个问题,而无需我去上下文分离实体,或者有其他方法吗?将实体与上下文分离的最佳方法是什么?
entity-framework - MVC3:存储库更新和 ObjectStateManager
我的存储库中有一个Update
方法,用于更新项目中的文章。我最初使用这种方法只是为了对文章进行管理员编辑。它可以正确处理,但我决定添加一个简单的机制来计算“阅读次数最多”的文章。为此,我想在TimesRead
每次查看文章时更新属性。这给我带来了似乎围绕使用ObjectStateManager.ChangeObjectState
. 这是我的Update
方法:
在我AdminController
的以下方法中正确更新:
但是,在这种TimesRead
情况下,更新将触发以下异常:
无法附加该对象,因为它已经在对象上下文中。一个对象只有在它处于未更改状态时才能重新附加。
该控制器方法的相关代码:
在环顾四周,看看我能做些什么来解决这个问题后,我发现了这个SO question 的答案。Update
所以我通过用建议的代码替换我的方法来实现这个答案。这在我的管理场景中也可以正常工作,但在场景中却不行TimesRead
。抛出以下异常:
ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
例外的含义很清楚,但它确实让我想知道我应该如何处理这些简单的更新。我发现我可以“愚弄” EF 认为模型通过设置没有改变,EntityState.Unchanged
并且会更新TimesRead
,但会为管理员更新提供例外,说明ObjectStateManager
不包含对对象的引用。
我也很清楚这些场景有何不同。该Edit
操作是将 ViewModel 中的属性映射到一个新的、未附加的Article
对象上,而ArticleController
处理直接从上下文中检索的对象。这让我觉得我应该重构这些控制器方法之一,以便更新所采取的步骤是相同的。我只是不确定我应该如何处理,因为这两种方法似乎应该能够对我共存。所以我的问题是,我可以改变什么来让两种类型的更新都能正常工作?
感谢您的宝贵时间,对于发布的大量代码,我感到非常抱歉。我只是觉得这一切都与问题有关。
entity-framework - ObjectStateManager 和分离的实体状态
我正在使用实体框架,它的某些部分功能对我来说仍然不清楚。比较难理解的主要有:
SubmitChanges
过程;- 调用更新-删除-插入方法的顺序;
- 对此事的认知
ObjectStateManager
- 分离
EntityState
,它是提交过程的一部分;
提供您的解释或提供一些有用的链接。