RavenDB 在模型命名空间更改后抛出转换异常

2024-01-15

在数据库中,我已经存储了数百个文档。现在系统架构已经改变,并且(除其他外)模型被迁移到不同的命名空间(在不同的程序集中)。

下面显示了示例文档的元数据:

以及我用来获取此类文档的代码:

var configuration = documentSession.Load<One.Social.Core.Entities.Setting>("Setting");

这会抛出铸造异常:

[InvalidCastException: Unable to cast object of type 'One.QA.Core.Entities.Setting' to type 'One.Social.Core.Entities.Setting'.]

UPDATE:

类似的错误来自 NewtonsoftJson,而我在文档中有指定类型的集合,但现在已更改。

在数据库中,我有问题文档,其中包含答案列表:

在代码中,类型如下所示:

namespace One.Social.Ask.Web.Models
{
    public class Question
    {        
        public string Content { get; set; }
        public IList<One.Social.Ask.Web.Models.Answer> Answers { get; set; }        
    }
}

答案名称空间已更改。另外,现在它派生自IList,不再是ICollection。我不需要$type现在元,它应该是:

enter image description here.

虽然现在是一个列表,但由于旧的,会出现错误$type信息:

Newtonsoft.Json.JsonSerializationException: Error resolving type specified in JSON 'System.Collections.ObjectModel.Collection`1[[One.QA.Core.Entities.Answer, One.QA.Core]], mscorlib'. ---> Newtonsoft.Json.JsonSerializationException: Could not find type 'System.Collections.ObjectModel.Collection`1[[One.QA.Core.Entities.Answer, One.QA.Core]]' in assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

迁移所有文档以反映当前类型名称的最佳方法是什么?有什么内置机制吗?

顺便说一句:我正在使用 RavenDB - Build #960


我遇到了同样的问题并最终这样做了:

Advanced.DatabaseCommands.UpdateByIndex(
    "Raven/DocumentsByEntityName",
        new IndexQuery {Query = "Tag:Album"},
        new []{ new PatchRequest() { 
            Type = PatchCommandType.Modify, 
            Name = "@metadata", 
            Nested= new []{ 
                new PatchRequest{
                    Name= "Raven-Clr-Type",
                    Type = PatchCommandType.Set,
                    Value = "Core.Model.Album, Core" }}}},
        false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RavenDB 在模型命名空间更改后抛出转换异常 的相关文章

随机推荐

  • UserProfile 状态在 bot v4 中的用户之间保持不变

    当我有两个机器人实例时 如果我将机器人部署到 Azure 则可以是两个模拟器窗口或两个浏览器 输入的第一个名称对于所有其他实例都是持久的 实例一 https i stack imgur com WsPw7 jpg https i stack
  • 将spawn()的stdout/stderr重定向到Ruby中的字符串

    我想使用spawn 对于多个并发子进程 在Ruby 中执行外部进程 并将stdout 或stderr 收集到一个字符串中 这与使用Python 的子进程Popen communicate 可以完成的方式类似 我尝试将 out err 重定向
  • ReadableByteChannelImpl 如何处理中断

    我正在尝试使用Channels newChannel包装输入流以支持中断 我看到了关于这是否有效的相互矛盾的信息 包括 ReadableByteChannelImpl 中的注释 Not really interruptible In Rea
  • 带有字符串键的 Lua 表不能使用数字索引?

    我是 Lua 的初学者 我认为使用字符串键将值推送到表中也会自动执行数字索引 但我认为我错了 我的代码 local t t name John t age 30 print Name t name nAge t age 虽然这段代码运行良好
  • 使用 css 3d 转换后如何修复 Safari 5 Mac OS X 中的脆文本?

    当应用 css 3d 变换的元素之后 相对和绝对定位的元素触发奇怪的行为时 我遇到了问题 为了解决这个问题 我必须设置背景颜色 但是如果我需要透明度怎么办 这是重现该错误的最低限度 http jsfiddle net 8VABq 3 htt
  • 如何获取 DD-MM-YYYY 格式的日期

    我正在使用 Parse 数据库 我存储日期格式 使用控制台时我得到这种格式 Tue Jul 18 2017 15 46 47 GMT 0100 CET 我想获得这种格式 18 07 2017 有什么想法请 可以使用以下代码来完成 let t
  • 抓取屏幕分辨率并根据大小显示结果

    我正在尝试根据屏幕分辨率大小显示数据库的结果 我上周发布了一个关于如何获取宽度的问题 并且能够在此处的一些想法的帮助下提出这个jquery 但无法完成第二个方面 即根据大小显示结果
  • 您正在使用遗留实现。请更新您的代码:使用createWrapper() 和wrapper.useWrappedStore()。 nextjs 还原?

    我在使用 redux 工具包和 next js 时遇到错误 我面临着这个遗留警告 You are using legacy implementaion Please update your code use createWrapper an
  • 填充 NaN 值

    我有一个数据框 TIMESTAMP P ACT KW PERIODE TARIF P SOUSCR 2016 01 01 00 00 00 116 HC 250 2016 01 01 00 10 00 121 HC 250 2016 01
  • doc.save() 与 jspdf 抛出错误

    当我尝试使用 jsPDF 的 save 函数时 它抛出以下错误 ReferenceError saveAs 未定义 我只是尝试一个非常简单的例子 var doc new jsPDF doc text 20 20 Hello world do
  • 什么是类型和效果系统?

    The 维基百科文章关于效果系统 http en wikipedia org wiki Effect system目前只是一个简短的存根 我有一段时间想知道什么是效果系统 除了类型系统之外 是否还有其他语言还具有效果系统 可能的 假设的 符
  • 在运行时枚举 .NET 程序集资源

    我有一个资源程序集 其中包含使用构建的图像文件Resource or Content建立行动 这使得可以使用 Uris 访问这些文件 但是我找不到枚举此类资源的方法 如果我将构建操作设置为嵌入式资源可以使用以下代码枚举文件 string r
  • 使用 GADT 在 Haskell 中重新创建 Lisp 的“apply”

    作为练习 我正在尝试重新创建 Lispapply在哈斯克尔 我不打算将其用于任何实际目的 我只是认为这是一个更好地熟悉 Haskell 类型系统和一般类型系统的好机会 所以我也不是在寻找其他人的实现 我的想法如下 我可以使用 GADT 来
  • 如何访问NTAG213 NFC交互计数器?

    我正在开发一个 Android 应用程序 我需要查找 NFC 标签被读取的次数 我已经浏览了 NFC 论坛上的文档 对于 NTAG213 有一个名为 MIRROR CONF 的字段 使用该字段可以确定交互计数器是否启用 禁用以及计数器的值
  • 如何用java播放.wav文件

    我正在尝试用 Java 播放 wav 文件 我希望它执行以下操作 按下按钮时 会发出短促的蜂鸣声 我用谷歌搜索了一下 但大部分代码都不起作用 有人能给我一个简单的代码片段来播放 wav 文件吗 最后我设法做到了以下几点并且效果很好 impo
  • p 与 ol 或 ul 的表单样式

    通常我使用无序列表标签来设计表单 例如 fieldset ul li li ul fieldset
  • 在 Android 上使用 Jackson 库解析大型 JSON 时出现内存不足错误

    我正在使用 Jackson 库来解析来自服务器的大型 JSON 响应 json 的大小约为 7 8 MB 我在这段代码上遇到了 outOfMemoryError ObjectMapper mapper new ObjectMapper Js
  • Gitlab docker executor - 在 before_script 之后缓存图像

    In gitlab ci有一个选项 gitlab ci yml http doc gitlab com ce ci yaml README html文件在任何实际脚本运行之前执行命令 称为before script gitlab ci ym
  • JavaFX 应用程序抛出 NullPointerExceptions 但仍然运行

    我运行的每个 JavaFX 应用程序都会抛出两个 NullPointerException 它们不会阻止甚至影响项目的执行 并且只有在调试模式下运行应用程序时我才能看到它们 我什至遇到了来自 Oracle 的 HelloWorld 示例和这
  • RavenDB 在模型命名空间更改后抛出转换异常

    在数据库中 我已经存储了数百个文档 现在系统架构已经改变 并且 除其他外 模型被迁移到不同的命名空间 在不同的程序集中 下面显示了示例文档的元数据 以及我用来获取此类文档的代码 var configuration documentSessi