问题标签 [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.

0 投票
1 回答
706 浏览

c# - .ApplyCurrentValues 抛出异常,说明实体键不匹配

这是我得到的例外:

“在 ObjectStateManager 中找不到键与所提供对象的键匹配的对象。验证所提供对象的键值是否与必须应用更改的对象的键值匹配。”

它由下一行表示:

我在此页面上读到该错误可能是因为它没有附加,但是当我尝试附加它时,我得到另一个异常:

“一个实体对象不能被多个 IEntityChangeTracker 实例引用。”

通过阅读,这意味着记录已经附加到模型上。

当我尝试分离它时,我得到下一个:

“无法分离对象,因为它未附加到 ObjectStateManager。”

这是我的控制器,我在其中更新表“InputValue”,现在取决于值我还想对表“Transaction”进行更新,这是由 updatedTransactions 函数完成的。

这是功能:

// 生成新结果的随机代码

我对此一无所知,任何帮助将不胜感激。

PS:我使用 ApplyCurrentValue 的任何其他代码都可以完美运行。

0 投票
1 回答
301 浏览

asp.net-mvc - 控制器中 ObjectStateManager 错误中已存在具有相同键的对象

我的控制器中有以下 ActionResults(为简单起见已截断)。当我发布时,我收到错误消息:ObjectStateManager 中已存在具有相同键的对象。我认为这是因为我在 GET ActionResult 中加载了一个实体:

然后在帖子中再次加载它并尝试编辑/保存它。我需要向数据库添加一个新的维护实体并更新(现有)设备任务实体中的值。如何在 ObjectStateManager 中获得对 EquipmentTask 的引用?或者,将 EquipmentTask 实体作为属性添加到我的 MaintenanceViewModel 中会更好吗?我只想更新 EquipmentTask 实体中的一个属性/列

0 投票
1 回答
824 浏览

entity-framework - EntityFramework ObjectStateManager.DetectConflicts 中的空引用异常

我编写了一个 WCF Web 服务,它接受 XML 文件并将它们存储到数据库中。在“低负载”下一切正常,但在高负载下我得到了一些意想不到的行为,到目前为止我还无法确定问题到底是什么。有人有建议吗?

这是我在日志中“有时”看到的异常——比如 10 000 次中有 25 次:

我看到这种情况每隔一段时间就会发生一次,我目前正在研究这是否与并发有关(其他一些线程可能在同一个实体上工作)。有人可以给我一些关于在哪里寻找的指示吗?

0 投票
0 回答
111 浏览

sql - ObjectStateManager 无法识别对象条目

我有以下代码..

对于这篇文章,我收到类似“ObjectStateManager 不包含引用类型对象的 ObjectStateEntry”之类的错误。

尝试了一些挖掘,但无法理解确切的原因。在它完美运行之前进一步添加,但后来我在表中添加了 LastUpdated 列,因此开始给出上述错误。

0 投票
3 回答
2033 浏览

c# - 如何清除 ObjectStateManager

我想清除 ObjectStateManager,以便在调用SaveChanges();DbContext 后,以下行不返回任何结果:

行为似乎是 ObjectStateManager 中的所有对象(已添加、已修改)都将 State 更改为Unchanged,因此代码将全部返回它们。有没有办法清除它?

我需要这个,因为我正在重用上下文并为具有未更改状态的实体做一些事情,但是由于 ObjectSateManager 与未更改的实体一起增长和增长(因为它在 SaveChanges 之后将它们全部更改为未更改)它为一个实体做同样的工作超过。

编辑:

为什么分离方法对我不起作用:

假设您有 2 个类:

现在,我已将一些需要更新或插入的城市的国家项目传递给 SaveChanges。

让我们假设以下内容:

现在,我的 ObjectStateManager 中所有这些对象都处于未更改状态。(在 SaveChanges 调用之后)

我然后遍历它们并将状态设置为不变,这导致每个城市都有Nation = nulland Nation.Cities being empty

0 投票
2 回答
205 浏览

c# - 具有相同键的对象已存在 objectstatemanager

我有一个实体,它拥有另一个实体的虚拟集合。当我尝试通过为新插入的对象填充虚拟集合来插入数据时,它会抛出具有相同键的对象已经存在的错误。

我知道当实体未创建时,它的身份字段将具有 0 值。但是当我将数据存储在主表中时,我需要存储数据的集合。

这是我正在使用的插入方法。以下是此操作的 poco 类(扩展类以保存数据集合的部分实现)。

我正在使用 json 传递数据。这似乎也是正确的。因为数据的虚拟集合被正确地添加到实体中。

请帮我解决这个问题。

注意:如果我尝试将身份字段分配给我自己,只是为了解决这个相同的关键异常,它会引发参照完整性异常。我知道存储真实集合应该可以正常工作。但这对我不起作用。请给我一些指导和解决方案。

谢谢,萨钦

0 投票
1 回答
2802 浏览

c# - MVC5/EF6:无法删除对象,因为它在 ObjectStateManager 中找不到?

我有以下HttpPost在我的 MVC5 应用程序中工作的 Delete() 方法。据我所知,与此控制器、视图甚至模型相关的任何内容都没有改变。

用户管理器片段:

当我的代码到达IdentityResult result = await UserManager.DeleteAsync(applicationUser)它时,它会立即跳到下面的 Dispose() 方法,而不是加载索引视图,而是给出:Server Error in '/' Application. The object cannot be deleted because it was not found in the ObjectStateManager.

有人可以告诉我哪里出错了吗?我以前从未见过这个错误。以前,此 DeleteConfirmed() 代码完全按预期工作。

编辑

启动.cs

编辑2

CustomAuthorization.cs(助手):

编辑3

/App_Start/ 中的 Startup.Auth.cs:

haim770 指出的解决方案是我在我的操作方法中错误地使用了 2 个 DbContext引用DeleteConfirmed()

更改ApplicationUser applicationUser = db.Users.Find(id)为正确async,一切都按预期工作:ApplicationUser applicationUser = await UserManager.FindByIdAsync(id);

感谢所有花时间提供帮助的人!

0 投票
3 回答
4063 浏览

c# - EF ObjectStateEntry OriginalValues 包含 CurrentValues

我正在尝试覆盖实体框架的SaveChanges()方法来保存审计信息。我从以下内容开始:

我遇到的问题是我输入entry.OriginalValues和输入的entry.CurrentValues值始终是新的更新值:

审计实体状态

0 投票
1 回答
358 浏览

c# - 在数据库中编辑对象之前,如何获取对象的值?

我正在编写一个Web API 2Web 服务,并希望在DbSet.

我做了一些研究,我相信我需要使用这个ObjectStateEntry对象。但是,我不确定如何使用ObjectStateEntry 对象获取对象的值。

这是一个简单的 put 函数,其中包含一些我认为应该可以工作的代码:

我收到以下错误:

“DataService.Context.DataServiceContext”不包含“ObjectStateManager”的定义,并且找不到接受“DataService.Context.DataServiceContext”类型的第一个参数的扩展方法“ObjectStateManager”(您是否缺少 using 指令或程序集引用?)

在数据库中编辑对象之前,有人可以帮我获取对象的值吗?

0 投票
1 回答
236 浏览

c# - 错误 ObjectStateManager 中已存在具有相同键的对象。使用 ViewModel

我知道这个错误有很多问题,但我无法解决我的问题。

所以我得到了错误:

InvalidOperationException
ObjectStateManager 中已存在具有相同键的对象。
ObjectStateManager 无法跟踪具有相同键的多个对象。

我什至不知道哪个键是一样的?我可以以某种方式查找吗?

我的控制器

我的视图模型

我会很感激你的帮助。