- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力调试此错误,因为尽管一直报告该错误,但该应用的行为符合预期。希望得到有关其含义以及如何调试其源代码的指针。
抱歉含糊不清,但由于我得到了预期的结果,我不确定要提供哪些其他信息。
更新
我已对此问题进行了重现,并尝试将代码集中在该问题上。即使数据库已正确更新,也会始终引发错误。代码中有一个 saveChanges,它使用 Breeze Todo 示例中 dataservice.js 的保存功能。 SaveOptions.allowConcurrentSaves 为 false。
完全无法解释它,并查看了我的 EF 代码,看看我是否犯了一个明显的错误但看不到它。发送到 WebAPI SaveChanges 方法的包看起来也正确(正确填充了 ID 等)。
https://github.com/DazWilkin/BreezeJS.ScoreIssue
2 月 6 日更新
韦德的有用回答仍未解决该问题。不幸的是,除非我能理解我做错了什么或知道这是一个错误,否则我将不得不放弃在这个项目中使用 Breeze,并恢复到蹩脚的、普通的旧 AJAX 调用。
问题似乎围绕着服务器在保存更改时返回归零的 GUID。该方法不返回错误。得知这是我的实体模型中的一个错误,我会很高兴,但我对此表示怀疑。
这是失败的原因:
breeze.debug.js:11954
var ix = this._indexMap[tempValue];
if (ix === undefined) {
throw new Error("Internal Error in key fixup - unable to locate entity");
}
当代码到达这一点时,this._indexMap的值是正确的,是:
{"bcb6e670-00fc-469d-8531-5767f40bf3c1":0}
但是 tempValue 的值(由服务器从 Web API 调用返回)是错误的:
00000000-0000-0000-0000-000000000000
realValue 是正确的并且是:
1093b975-7686-4621-8336-77c38ed36de0
备份堆栈。以下是 AJAX 调用的结果,breeze.debug.js: 12574。看到从服务器/WebAPI 调用返回时 tempValue 归零。 realValue 是正确的。这就是数据库包含的内容。该行被添加到表中没有问题。
"KeyMappings": [
{
"$id": "4",
"$type": "Breeze.WebApi.KeyMapping, Breeze.WebApi",
"EntityTypeName": "...Score",
"TempValue": "51877f5b-811f-4260-bd5b-cf9965159597",
"RealValue": "92b73b8a-8b33-45cd-9822-ca7c0c5d5d9a"
},
{
"$id": "5",
"$type": "Breeze.WebApi.KeyMapping, Breeze.WebApi",
"EntityTypeName": "...PropertyValue",
"TempValue": "00000000-0000-0000-0000-000000000000",
"RealValue": "1093b975-7686-4621-8336-77c38ed36de0"
}
],
根据服务器端在 saveBundle 中收到的内容进行验证。请注意,服务器收到的两个实体的 ID 都具有有效的 GUID ID。
"entities": [
{
"ID": "51877f5b-811f-4260-bd5b-cf9965159597",
...
"entityAspect": {
"entityTypeName": "Score:...",
"entityState": "Added",
"originalValuesMap": {},
"autoGeneratedKey": {
"propertyName": "ID",
"autoGeneratedKeyType": "Identity"
}
}
},
{
"ID": "bcb6e670-00fc-469d-8531-5767f40bf3c1",
...
"entityAspect": {
"entityTypeName": "PropertyValue:...",
"entityState": "Added",
"originalValuesMap": {},
"autoGeneratedKey": {
"propertyName": "ID",
"autoGeneratedKeyType": "Identity"
}
}
}
],
不出所料,通过 AJAX 调用发送到服务器的值是在轻风中创建的:10494 saveBundleStringified 是正确的,并且与服务器接收到的值相同(不会重现,但我向您保证它们是) .
而且,根据我的代码,当调用 saveChanges 时,
manager.getChanges().length == 2
manager.getChanges()[0].ID() == "51877f5b-811f-4260-bd5b-cf9965159597" (Score)
manager.getChanges()[1].ID() == "bcb6e670-00fc-469d-8531-5767f40bf3c1" (PropertyValue)
并且,正如预期的那样,它们与服务器接收到的 saveChanges 期间实体 ID 的 (temp) 值匹配...
我做错了什么??如果我有头发,我会把它撕掉!
最佳答案
我已经解决了。
我的不一致应用 (!) 约定是使 setter 在代码优先类型上是内部/私有(private)的。我的说法前后不一致,因为在感觉我已经用尽所有可能性之后,我发现 PropertyValue 类型,即引发错误的类型,有一个内部集合。
删除这个并重建解决方案,问题就解决了!
所以:
public Guid ID { get; internal set; }
应该是:
public Guid ID { get; set; }
关于breeze - "Internal Error in key fixup - unable to locate entity"错误但数据库按预期更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164965/
这个问题在这里已经有了答案: How to make a property protected AND internal in C#? (8 个答案) 关闭 9 年前。 我需要声明一个既受又 内部保
我对在 Kotlin 1.3 中使用 Strings.isNullOrEmpty 导入 jdk.internal.joptsimple.internal.Strings.isNullOrEmpty 的
我有一个项目,实习生单元测试应该位于与被测源代码不同的目录树中。有点像这样: projectRoot projectRoot/src projectRoot/tests projectRoot/tes
如何在功能测试中访问浏览器的主要 JavaScript 范围?例如,我想获取对 Dojo 小部件的引用并检查它的属性。例如,在浏览器 JavaScript 控制台中,我可以运行: dijit.
public class TestClass { protected internal int FieldA; internal protected int FieldB; }
我想创建一个内部自动属性: internal bool IP { get; protected internal set; } 我认为可以使 setter protected 或 protected
java.lang.NoSuchMethodError: okhttp3.internal.Internal.initializeInstanceForTests() When creating a
我正在尝试使用 intern 来测试在 node.js 下运行的 dojo 应用程序 我的 intern.js 配置文件是这样的: define({ loader: {
我在 Raspbian wheezy 上的 nginx 1.2.1-2.2 有点问题。我认为它是在我更改站点可用/默认文件中的索引后开始的。以下是相关文件: nginx.conf user www-d
我在尝试加载 Visual studio 2012 时遇到了此错误,遇到了异常。这可能是由扩展引起的,并且在 C:\Users\~\AppData 中给出了附加信息的位置\Roaming\Micros
我正在将一个项目迁移到 Java9,在我切换到新的 Java 版本后,测试开始失败,看起来 PowerMock 正在尝试访问一些它无法访问的类。 Tests run: 1, Failures: 0,
该触发器用于检测进度中的顺序是否已更新,并有助于更新进度的概览状态和完成时间。 但是当发生内部错误时,它并不总是有效,如下所示: Error: 13 INTERNAL: An internal err
当我尝试将包含一些 JavaScript 的项目导入工作区时(使用 Eclipse 的 Neon.M6 版本),出现此错误: eclipse.buildId=4.6.0.I20160317-0200
我在尝试访问 FullContact API 服务器时收到此错误。我正在使用 okhttp 2.7.5 和 okhttp-urlconnection 2.7.5 以及改造 1.9.0。 Caused
当我试图读取一个以前版本的 pandas 保存的 pickle 文件时,它产生了一个 ImportError。 ImportError: No module named 'pandas.core.in
我正在将一个项目迁移到 Java9,在我切换到新的 Java 版本后测试开始失败,似乎 PowerMock 正在尝试访问它无法访问的一些类。 Tests run: 1, Failures: 0, Er
我正在尝试设置 Lumen - 建立在 Laravel 组件之上的“微框架”。服务器端有 nginx + php-fpm。 这是我的 nginx 配置: server { server_nam
在我们的项目中,我们决定在我们的项目中使用最新的 fmt 版本 (6.2.0) 并主要使用 printf 功能,因为我们在广泛使用 printf 的地方进行日志记录。 我使用 fmt 包中包含的 CM
我正在使用 Mockito jar 为 Groovy 编写 Junit 测试用例,但它给了我以下异常: java.lang.NoSuchMethodError: org.mockito.interna
我们的应用程序使用 Google 集合中的 MapMaker 类,并且我们遇到了以下异常,但仅限于使用 webstart 的 OS X 10.4。从应用程序包启动时以及在 OS X 10.5 和 Wi
我是一名优秀的程序员,十分优秀!