为什么在 RavenDB 中存储 Nancy.DynamicDictionary 只保存属性名称而不保存属性值?

2024-01-03

我正在尝试保存(RavenDB build 960)通过其内置传递到 Nancy 模块的表单数据项的名称和值Request.Form.

如果我保存一个简单的实例dynamic对象(带有测试属性和值),然后一切正常,并且属性名称和值都被保存。但是,如果我使用南希的Request.Form那么只保存动态属性名称。

我知道,在检索动态数据(RavenJObjects 等)时,我将不得不处理与恢复正确类型有关的进一步问题,但现在,我想首先解决保存动态名称/值的问题。

这是完整的测试请求和代码:

Fiddler Request (PUT) enter image description here

南希模块

Put["/report/{name}/add"] = parameters =>
    {
        reportService.AddTestDynamic(Db, parameters.name, Request.Form);
        return HttpStatusCode.Created;
    };

Service

public void AddTestDynamic(IDocumentSession db, string name, dynamic data)
{
    var testDynamic = new TestDynamic
    {
            Name = name,
            Data = data
    };
    db.Store(testDynamic);
    db.SaveChanges();
}

测试动态类

public class TestDynamic
{
    public string Name;
    public dynamic Data;
}

Dynamic contents of Request.Form at runtime enter image description here

生成的 RavenDB 文档

{
  "Name": "test",
  "Data": [
    "username",
    "age"
  ]
}

Note:Request.Form 的类型是Nancy.DynamicDictionary。我认为这可能是问题所在,因为它继承自IEnumerable<string>而不是预期的IEnumerable<string, object>。我认为 RavenDB 正在枚举DynamicDictionary并且只返回动态成员名称而不是成员名称/值对。

谁能告诉我如何或是否可以将 Request.Form 视为dynamic对象关于将其保存到 RavenDB 的问题?如果可能的话,我想避免任何手工枚举DynamicDictionary建立一个dynamic实例以便 RavenDB 可以正确序列化。

谢谢

Edit 1 @Ayende

DynamicDictionary 似乎实现了GetDynamicMemberNames() method:

查看 GitHub 上的代码可以发现以下实现:

public override IEnumerable<string> GetDynamicMemberNames()
{
    return dictionary.Keys;
}

这是您期望在这里看到的吗?

Edit 2@TheCodeJunkie

感谢您的代码更新。为了测试这个我有:

  1. 创建了 NancyFx/Nancy 主分支的本地克隆 GitHub
  2. 将 Nancy.csproj 添加到我的解决方案并引用该项目
  3. 运行与上面相同的测试

新 DynamicDictionary 中的 RavenDB 文档

{
  "Name": "test",
  "Data": {
    "$type": "Nancy.DynamicDictionary, Nancy",
    "username": {},
    "age": {}
  }
}

您可以看到生成的文档有所改进。这DynamicDictionaryRavenDB 现在可以正确获取类型信息,并且动态属性名称已正确序列化,但不幸的是动态属性值并未正确序列化。

下图展示了新的外观DynamicDictionary在行动中。对我来说一切看起来都很好,新的词典界面清晰可见。我注意到的唯一一件事是调试器中的动态“结果视图”(与“动态视图”相对)仅显示属性名称,而不显示它们的值。 “动态视图”显示两者如前(见上图)。

Contents of DynamicDictionary at run time enter image description here


生物分形, 问题是 DynamicDictionary,在 JSON 中,类型可以是对象或列表,但不能同时是两者。 对于动态对象序列化,我们依赖 GetDynamicMemberNames() 的实现来获取属性,我认为它不存在。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 RavenDB 中存储 Nancy.DynamicDictionary 只保存属性名称而不保存属性值? 的相关文章

  • RavenDB:如何防止 RAM 利用率过高?

    我的应用程序包括一些返回大型结果集的查询 尽管我已经用Take 300 lambda During peak usage times I ve seen Raven Server exe consume an unusually large
  • RavenDb:更新非规范化参考属性值

    我已经实现了RavenDB非规范化参考 http ravendb net docs faq denormalized updates图案 我正在努力将静态索引和补丁更新请求连接在一起 以确保在引用的实例值更改时更新我的 非规范化引用属性值
  • IL/CLR/DLR 参考资料?

    我想了解更多有关 IL 和 CLR DLR 的幕后信息 我的一个朋友推荐了 Inside Microsoft NET IL Assembler 这本书 但自从它于 2002 年出版以来 我担心它现在已经过时了 有没有人有更多最新的书籍或网站
  • 从 RavenDB 检索整个数据集合

    我有一个要求 我需要获取整个数据集合Users来自 RavenDB 并将检索到的结果集与另一组数据进行比较 这个特定集合中有近 4000 条记录 因为默认情况下 Raven 是安全的 所以我不断收到以下任一异常Number of reque
  • 使用RavenDB作为持久缓存

    我目前有一个 Web 应用程序 它在内存中缓存大量数据 数十万个条目 以供快速查找 然后在 SQL Server 中作为持久缓存 基本上 该信息由地址的地理编码组成 其中地理编码是通过远程 Web 服务检索的 如果需要连续调用而不是缓存 则
  • 在NancyFx中获取url参数

    我正在使用 NancyFx 构建 Web API 但从 URL 获取参数时遇到一些问题 我需要向 API 发送请求 consumptions hourly from 1402012800000 tags 171 1342 5D to 140
  • Nancy 绑定时的最大 JSON 长度异常

    我有一个简单的 Nancy 自托管 C 项目 它反序列化 NancyModule 中的数据 如下所示 Post build something gt var data this Bind
  • 按实体名称和上次修改日期搜索

    我在 RavenDb 中存储了许多命令 它们都实现了 ICommand 我希望能够搜索上次修改的元数据和 Raven Entity Name 我目前正在对每个命令进行多重映射 如下所示 public class CommandAuditSe
  • RavenDB 会话 > 30

    如果我尝试保存要保存的项目列表 其中计数 gt 30 我会收到一条错误消息 最大请求数 30 已允许此会话 到达 Raven限制了数量 允许会话的远程调用 作为预警系统 预计会议时间很短 住过 Raven提供设施 像 Load string
  • 使用 RavenDb 查询字典

    我有一个类定义为 public class Student public string Id get set public IDictionary
  • RavenDb - 远程服务器返回错误:(403) Forbidden

    当我尝试在 RavenDb 上创建 database people 集合时 出现以下错误 远程服务器返回错误 403 禁止 我在 IIS 上热了 Raven 但我不确定发生了什么 在 raven Management Studio 上 当我
  • 使用 NancyFX 进行模型验证

    我真的很习惯 ASP NET MVC 方法 用相应的属性注释模型 MVC 验证它并更新 ModelState Errors ModelState 在视图上可用 因此可以向用户显示错误 我还没有找到相关信息wiki https github
  • 使用 Nancy 返回包含有效 Json 的字符串

    我从另一个服务收到一个包含有效 JSON 的字符串 我只想与 Nancy 转发此字符串 但还将内容类型设置为 application json 这将使我无需在客户端使用 parseJSON data 如果我使用 Response AsJso
  • 如何调整 Nancy 模型绑定中的字段名称?

    在 Web 应用程序中 我使用 Nancy 创建 REST 服务 不幸的是 在 HTML 中我们的字段名称是小写的 firstName 但 NET 中相应的属性是大写的 FirstName 此外 我们还有一些字段不是 1 1 映射的 例如i
  • 使用 RavenDB 的“传统”一对多查询

    我知道include RavenDB 的功能 它允许我在数据库的一次往返中立即获取引用的文档 但我的问题是 我首先获取的文档不包含对 其他 文档的引用 但 其他 文档引用了当前文档 想象一下我们在世界各地都有站点的设置 每个site可能会触
  • Expression.Lambda 和运行时查询生成,嵌套属性“Where”示例

    我在有关为Where查询构建表达式树的问题上找到了非常好的答案 Expression Lambda 和运行时的查询生成 最简单的 Where 示例 https stackoverflow com questions 8315819 expr
  • Ravendb:如何删除给定类型的所有文档

    更具体地说 在 Raven DB 中 我想创建一个具有如下签名的通用方法 public void Clear
  • Nancyfx 通过 HTTPS 自托管

    我尝试以自托管模式启动 nancyfx 网络服务器 执行以下代码时一切正常 public static void Main string args var hostConfig new HostConfiguration UrlReserv
  • RavenDb 和多租户

    我已经研究并使用了 RavenDb 一段时间 并开始考虑 MultiTenancy 多租户 Ayendes 示例如下所示 using var store new DocumentStore Url http localhost 8080 I
  • RavenDB:为什么我会在此多重映射/归约索引中获得字段空值?

    受到 Ayende 文章的启发https ayende com blog 89089 ravendb multi maps reduce indexes https ayende com blog 89089 ravendb multi m

随机推荐

  • 为什么队列没有实现 len() ?

    内置功能len https docs python org 3 library functions html len https docs python org 3 library functions html len 返回 对象的长度 项
  • 如何生成 8 位唯一标识符来替换 python pandas 中的现有标识符

    假设我有以下简单的数据框 但实际上 我有数十万行这样的行 df ID Sales 倀 譋 理 100 倀 50 倀 譋 理 70 躥 60 我的想法是我想用随机生成的 8 位数字替换中文数字 如下所示 ID Sales 13434535 1
  • 将添加了叠加层的照片保存到照片库

    我正在制作一个应用程序 用户可以在其中拍照 在图像上放置叠加层 然后用户可以保存图像或将其上传到 Facebook 或其他网站 我已经设法让应用程序拍照 并制作我正在使用的叠加层UIImageView 它被放置在照片的顶部 我不确定如何将带
  • Rails 数据库设计:使用字符串还是整数?

    假设我有一个 Rails 表 其中包含从一组选项中选择的信息 例如 一个名为sex可能是Male or Female 一个名为Bodytype将是slim curvy ETC 我的问题是 将这些值存储为整数或字符串更好的做法是什么 当然 在
  • 为什么将 main 声明为数组会编译?

    I saw CodeGolf 上的一段代码 https codegolf stackexchange com a 69193 13441这是一个编译器炸弹 其中main被声明为一个巨大的数组 我尝试了以下 非炸弹 版本 int main 1
  • ToolTip 与 Popup(WPF 控件)

    这些 WPF 控件之间的主要区别是什么 当我应该使用ToolTip代替Popup A ToolTip是一个小弹出窗口 当用户将鼠标指针悬停在元素上时出现 这Popup控件提供了一种在单独的窗口中显示内容的方法 该窗口相对于指定的元素或屏幕坐
  • 桌面上的innerWidth 和outerWidth 奇怪

    在 chrome 中打开控制台 在 SO 上 并复制innerWidth outerWidth screen width 对我来说这会返回2133 1920 1920 显然innerWidth大于outerWidth 好像这还不够奇怪 我接
  • 猫鼬游标批量大小

    如果定义了batchSize 如何迭代光标批处理文档 例如 当batchSize定义为等于50时 有没有办法迭代这50个子文档 var myCursor collection find cursor batchSize 50 mycurso
  • 多处理:如何在多个进程之间共享字典?

    创建多个在可连接队列上工作的进程的程序 Q 并可能最终操纵一个全局字典D来存储结果 所以每个子进程可以使用D存储其结果并查看其他子进程正在产生什么结果 如果我在子进程中打印字典 D 我会看到对其 即 D 上 所做的修改 但是主进程加入Q后
  • 接收 JSON POST [重复]

    这个问题在这里已经有答案了 可能的重复 如何在 php 中获取 POST 的正文 https stackoverflow com questions 8945879 how to get body of a post in php 我收到一
  • 如何使我的 R 会话变得普通?

    这是澄清先前问题的后续行动 如何确保同一服务器上不同用户的 R 环境一致 https stackoverflow com questions 12519273 how can i ensure a consistent r environm
  • 我的类的构造函数应该执行多少工作?

    我有一个代表数据流的类 它基本上 读取或写入文件 但首先对数据进行加密 解密 并且还有一个处理正在访问的媒体的底层编解码器对象 我正在尝试以 RAII 方式编写这个类 并且我想要一个干净 漂亮 可用的设计 令我困扰的是 现在构造函数中正在完
  • 我什么时候应该对整个哈希表进行重新哈希?

    我如何决定何时应该对整个哈希表进行重新哈希 这在很大程度上取决于您解决冲突的方式 如果您使用线性探测 负载系数远高于 60 左右时 性能通常会开始严重下降 如果您使用双散列 80 85 的负载因子通常是相当合理的 如果使用碰撞链 负载系数高
  • Java EE FirebaseApp 名称 [默认] 已存在

    我遇到了与 Firebase 和 Java EE 相关的问题 我目前正在为我的项目编写一些 Java servlet 并且我第一次使用 Firebase 是因为我想尝试一些新的东西 我的实际问题如下 我有一个 servlet 它负责在用户数
  • Android 从字符串数组中设置 listItem 背景颜色

    有谁知道如何以编程方式从字符串数组中设置列表项的背景 我有两个字符串数组 一个是文本视图的标题 另一个包含颜色引用 我已将标题数组添加到数组适配器中 并且正在显示 但现在我想更改数组中每个项目的背景颜色 这是我的布局
  • 多个 id 的 UpdateExistingPivot

    为了更新数据透视表中的单个记录 我使用updateExistingPivot方法 但是它以 id 作为第一个参数 例如 step gt contacts gt updateExistingPivot id completed gt true
  • 如何使 Collection 类型的用户控件属性在表单设计器中可编辑?

    今天在工作中 我偶然发现了一个让我抓狂的问题 基本上我的目标是这样的 我有一个UserControl1 具有以下类型的字段Collection
  • 安装airflow时,airflow_home文件夹中没有创建任何文件

    我之前在VMware中centos7安装成功 不过同样的 在docker中从centos7手动安装也出现了问题 CentOS 的官方版本 venv jykim 0f0090962efa dev cat etc release CentOS
  • xcode 5 什么是警告,现在是错误 - 控制可能到达非空函数的末尾

    所以我一直在 Xcode4 中开发一个具有多个集合视图 准确地说是 4 个 的应用程序 我有两个视图 一个底部 主 视图 其中包含一个充满屏幕的大型集合视图 以及一个较小的 抽屉 视图 可以从侧面拉出 并包含三个狭窄的水平滚动集合视图 一个
  • 为什么在 RavenDB 中存储 Nancy.DynamicDictionary 只保存属性名称而不保存属性值?

    我正在尝试保存 RavenDB build 960 通过其内置传递到 Nancy 模块的表单数据项的名称和值Request Form 如果我保存一个简单的实例dynamic对象 带有测试属性和值 然后一切正常 并且属性名称和值都被保存 但是