使用 .NET SDK 在 DynamoDB 中保留动态对象

2023-12-28

我尝试使用 .NET SDK 将以下类保留到 DynamoDB:

public class MyClass
{
    public string Id { get; set; }

    public string Name { get; set; }

    public object Settings { get; set; }
}

问题出在“设置”属性上。它可以是任何类型的对象,并且我事先不知道可以分配给它什么。当我尝试将其持久保存到 DynamoDB 时,出现以下异常:

System.InvalidOperationException: 'Type System.Object is unsupported, it has no supported members'

文档模型和对象持久性模型方法都会导致相同的异常。

有没有办法将这些对象持久保存在 DynamoDB 中?其他数据库(例如 MongoDB 和 Azure DocumentDB)可以毫无问题地执行此操作,并且可以使用鉴别器将它们反序列化为正确的类型,或者将其反序列化为动态 JSON 对象。


您可以使用此处记录的一般方法:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBContext.ArbitraryDataMapping.html https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBContext.ArbitraryDataMapping.html

这是我对任意对象的实现:

public class DataConverter : IPropertyConverter
{
    public object FromEntry(DynamoDBEntry entry)
    {
        var primitive = entry as Primitive;
        if (primitive == null || !(primitive.Value is String) || string.IsNullOrEmpty((string)primitive.Value))
            throw new ArgumentOutOfRangeException();
        object ret = JsonConvert.DeserializeObject(primitive.Value as string);
        return ret;
    }

    public DynamoDBEntry ToEntry(object value)
    {
        var jsonString = JsonConvert.SerializeObject(value);
        DynamoDBEntry ret = new Primitive(jsonString);
        return ret;
    }
}

然后像这样注释你的属性:

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

使用 .NET SDK 在 DynamoDB 中保留动态对象 的相关文章

随机推荐

  • 在网站中存储用户上传的文件的最佳方式是什么?

    我正在尝试创建一个网站 需要在其中存储一些用户上传的文件 如一些个人资料图片 一些 xml 文件等 那么存储这些文件的最佳方式是什么 目前 我正在服务器上为每个注册的新用户创建一个新目录 并将每个用户的文件存储在各自的目录中 但有人告诉我这
  • Jersey、Guice 和 Hibernate - EntityManager 线程安全

    我在我的应用程序中以同样的方式使用了本教程 http www benmccann com hibernate with jpa annotations and guice http www benmccann com hibernate w
  • Font Awesome 5 使用 JS+SVG 版本时显示空方块

    尝试用 Font Awesome 图标替换列表项标签上的项目符号类型 但我得到一个空方块 ul list style none testitems line height 2em testitems before font family F
  • 在 OS X 终端中构建和运行 Monodevelop 解决方案

    我想从 OS X 终端构建并运行 Monodevelop 解决方案 执行此操作的适当工具 命令是什么 我尝试跑步mdtools build从包含的目录MySolution sln 这导致 bash mdtools command not f
  • 如何查找一个字段的值与另一字段的值匹配的所有文档

    我的文档中有两个字段 具有以下映射 field a type float field b type float 如何找到具有以下值的所有文档field a匹配的是field b 禁用脚本可以实现这一点吗 基本上你需要一个脚本来完成它 即使禁
  • C++ 类型名和内部类

    我尝试用谷歌搜索这个问题 但无法找到合适的答案 任何 C 大师都可以告诉我为什么 C 要求你声明 OuterClass
  • Kafka 到 Snowflake 连接问题

    我正在尝试从本地独立 Confluence Kafka 主题连接到 Snowflake 表 我正在使用以下连接器配置ksqldb CREATE SINK CONNECTOR snowflake sink WITH name snowflak
  • Eclipse 在调试 ctrl+shift+i 时丢失了检查快捷方式

    我正在尝试恢复快捷方式 但没有成功 有一个执行检查的快捷方式 只需单击 CTRL SHIFT I 但现在我已经没有这个功能了 它似乎消失了 有想法恢复它吗 谢谢 最后我想出了如何恢复这个命令 要到达此面板 您必须转到 Windows gt
  • 比较剪贴板中的 IDataObject

    我的 WPF 应用程序检查剪贴板上的数据 看看它是否可以使用该数据 因为我根据数据设置了一些按钮来启用 禁用 通过ICommand实现 这段代码被频繁调用 确定我的应用程序是否可以处理数据的工作有时可能非常重要 因此会导致我的应用程序随机
  • 在用户输入的数组中查找值

    我试图在用户之前输入过的数组中找到任何用户输入的值 我做了以下操作来查找数组中输入的值 但似乎不知道在哪里插入循环来查找用户输入的搜索值 好的 更新 我正在寻找一种方法来查找用户之前输入的数组中输入的值 如果符合逻辑的话是这样的 好的第二次
  • 面板上的 DrawToBitmap 为空白

    因此 我编写了一个类 它存储一些测试结果信息 然后是一个向用户显示该信息的控件 我想在此类上放置一个打印函数 以全页大小绘制控件并打印它 然而它总是显示空白 该代码将面板视为控件 因为它可能是其他类型的值 我想我一定缺少一些简单的东西 vo
  • 使用 Google Admin SDK 的服务帐户创建用户?

    文档对此有点不清楚 我真的可以这样做吗 到目前为止 我看到的唯一示例来自 Google 文档 该文档显示它使用 GoogleAuthorizationCodeFlow 类来获取授权 我见过一些使用服务帐户更新和检索用户列表的示例 但没有看到
  • 如何设计 Django 的文件选择器表单按钮的样式?

    我正在尝试设计我的 Django文件上传按钮 但由于它是通过表单处理的 并且没有在模板内的 HTML 中显式编写 所以我无法像其他输入类型按钮那样直接使用 HTML 和 CSS 对其进行样式设置 我尝试在我的 CSS 类中添加forms p
  • 将项目动态添加到使用 AJAX 的 jQuery Select2 控件

    我有一个使用 AJAX 进行填充的 jQuery Select2 控件
  • 如何在 Nuxt 中将“text/javascript”添加到

    我有以下脚本 我必须添加到标签 但在 Nuxt 中 我必须将其作为对象添加到 nuxt config js 中 我该怎么做呢
  • R以科学记数法显示数字[重复]

    这个问题在这里已经有答案了 函数的结果以科学计数法显示 我想将其改回正常 但仅限于该函数 我不想更改全局设置 有人可以帮忙吗 你可以做 format functionResult scientific FALSE or as integer
  • HTML5 离线模式和地理定位

    当您在 HTML5 中处于离线模式时 是否仍然可以使用地理定位功能 看来当我在线时 navigator onLine true 地理位置工作正常 但是当我离线时 navigator onLine false 我会被抛出错误回调 并且错误表明
  • 如何在运行 python 脚本时清除 cmd/terminal

    我一直在寻找在运行脚本时清除 shell 的方法 但是有没有办法在 CMD 中运行脚本时清除屏幕 我当前的方法是这样的 clear py import title def clear print n 25 title title game
  • 在 R jupyter 笔记本中使用 ipython 魔法?

    我安装了 jupyterconda install jupyter并正在运行一个安装了 r 内核的笔记本conda create n my r env c r r essentials 我正在运行笔记本并希望从 shell 运行 bash
  • 使用 .NET SDK 在 DynamoDB 中保留动态对象

    我尝试使用 NET SDK 将以下类保留到 DynamoDB public class MyClass public string Id get set public string Name get set public object Se