问题标签 [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.
c# - .ApplyCurrentValues 抛出异常,说明实体键不匹配
这是我得到的例外:
“在 ObjectStateManager 中找不到键与所提供对象的键匹配的对象。验证所提供对象的键值是否与必须应用更改的对象的键值匹配。”
它由下一行表示:
我在此页面上读到该错误可能是因为它没有附加,但是当我尝试附加它时,我得到另一个异常:
“一个实体对象不能被多个 IEntityChangeTracker 实例引用。”
通过阅读,这意味着记录已经附加到模型上。
当我尝试分离它时,我得到下一个:
“无法分离对象,因为它未附加到 ObjectStateManager。”
这是我的控制器,我在其中更新表“InputValue”,现在取决于值我还想对表“Transaction”进行更新,这是由 updatedTransactions 函数完成的。
这是功能:
// 生成新结果的随机代码
我对此一无所知,任何帮助将不胜感激。
PS:我使用 ApplyCurrentValue 的任何其他代码都可以完美运行。
asp.net-mvc - 控制器中 ObjectStateManager 错误中已存在具有相同键的对象
我的控制器中有以下 ActionResults(为简单起见已截断)。当我发布时,我收到错误消息:ObjectStateManager 中已存在具有相同键的对象。我认为这是因为我在 GET ActionResult 中加载了一个实体:
然后在帖子中再次加载它并尝试编辑/保存它。我需要向数据库添加一个新的维护实体并更新(现有)设备任务实体中的值。如何在 ObjectStateManager 中获得对 EquipmentTask 的引用?或者,将 EquipmentTask 实体作为属性添加到我的 MaintenanceViewModel 中会更好吗?我只想更新 EquipmentTask 实体中的一个属性/列
entity-framework - EntityFramework ObjectStateManager.DetectConflicts 中的空引用异常
我编写了一个 WCF Web 服务,它接受 XML 文件并将它们存储到数据库中。在“低负载”下一切正常,但在高负载下我得到了一些意想不到的行为,到目前为止我还无法确定问题到底是什么。有人有建议吗?
这是我在日志中“有时”看到的异常——比如 10 000 次中有 25 次:
我看到这种情况每隔一段时间就会发生一次,我目前正在研究这是否与并发有关(其他一些线程可能在同一个实体上工作)。有人可以给我一些关于在哪里寻找的指示吗?
sql - ObjectStateManager 无法识别对象条目
我有以下代码..
对于这篇文章,我收到类似“ObjectStateManager 不包含引用类型对象的 ObjectStateEntry”之类的错误。
尝试了一些挖掘,但无法理解确切的原因。在它完美运行之前进一步添加,但后来我在表中添加了 LastUpdated 列,因此开始给出上述错误。
c# - 如何清除 ObjectStateManager
我想清除 ObjectStateManager,以便在调用SaveChanges();
DbContext 后,以下行不返回任何结果:
行为似乎是 ObjectStateManager 中的所有对象(已添加、已修改)都将 State 更改为Unchanged
,因此代码将全部返回它们。有没有办法清除它?
我需要这个,因为我正在重用上下文并为具有未更改状态的实体做一些事情,但是由于 ObjectSateManager 与未更改的实体一起增长和增长(因为它在 SaveChanges 之后将它们全部更改为未更改)它为一个实体做同样的工作超过。
编辑:
为什么分离方法对我不起作用:
假设您有 2 个类:
现在,我已将一些需要更新或插入的城市的国家项目传递给 SaveChanges。
让我们假设以下内容:
现在,我的 ObjectStateManager 中所有这些对象都处于未更改状态。(在 SaveChanges 调用之后)
我然后遍历它们并将状态设置为不变,这导致每个城市都有Nation = null
and Nation.Cities being empty
。
c# - 具有相同键的对象已存在 objectstatemanager
我有一个实体,它拥有另一个实体的虚拟集合。当我尝试通过为新插入的对象填充虚拟集合来插入数据时,它会抛出具有相同键的对象已经存在的错误。
我知道当实体未创建时,它的身份字段将具有 0 值。但是当我将数据存储在主表中时,我需要存储数据的集合。
这是我正在使用的插入方法。以下是此操作的 poco 类(扩展类以保存数据集合的部分实现)。
我正在使用 json 传递数据。这似乎也是正确的。因为数据的虚拟集合被正确地添加到实体中。
请帮我解决这个问题。
注意:如果我尝试将身份字段分配给我自己,只是为了解决这个相同的关键异常,它会引发参照完整性异常。我知道存储真实集合应该可以正常工作。但这对我不起作用。请给我一些指导和解决方案。
谢谢,萨钦
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);
感谢所有花时间提供帮助的人!
c# - EF ObjectStateEntry OriginalValues 包含 CurrentValues
我正在尝试覆盖实体框架的SaveChanges()
方法来保存审计信息。我从以下内容开始:
我遇到的问题是我输入entry.OriginalValues
和输入的entry.CurrentValues
值始终是新的更新值:
c# - 在数据库中编辑对象之前,如何获取对象的值?
我正在编写一个Web API 2
Web 服务,并希望在DbSet
.
我做了一些研究,我相信我需要使用这个ObjectStateEntry
对象。但是,我不确定如何使用ObjectStateEntry
对象获取对象的值。
这是一个简单的 put 函数,其中包含一些我认为应该可以工作的代码:
我收到以下错误:
“DataService.Context.DataServiceContext”不包含“ObjectStateManager”的定义,并且找不到接受“DataService.Context.DataServiceContext”类型的第一个参数的扩展方法“ObjectStateManager”(您是否缺少 using 指令或程序集引用?)
在数据库中编辑对象之前,有人可以帮我获取对象的值吗?
c# - 错误 ObjectStateManager 中已存在具有相同键的对象。使用 ViewModel
我知道这个错误有很多问题,但我无法解决我的问题。
所以我得到了错误:
InvalidOperationException
ObjectStateManager 中已存在具有相同键的对象。
ObjectStateManager 无法跟踪具有相同键的多个对象。
我什至不知道哪个键是一样的?我可以以某种方式查找吗?
我的控制器:
我的视图模型
我会很感激你的帮助。