ASP.NET cosmosDB,忽略额外的元素?

Posted

技术标签:

【中文标题】ASP.NET cosmosDB,忽略额外的元素?【英文标题】:ASP.NET cosmosDB, Ignore extra elements? 【发布时间】:2021-11-29 18:38:03 【问题描述】:

只是好奇,我来自 Mongodb 背景,但我正在切换到 CosmosDBs 核心 SQL 数据库。我似乎找不到忽略额外元素的属性(mongo 有 [BsonIgnoreExtraElements]。我粗略的谷歌搜索也没有出现太多。

有人知道这个吗?

澄清

基本上 CosmosDB 没有预定义的类设置(它基本上存储原始 json)。因此,将来如果我们向数据库上下文类添加更多元素,我们不希望我们的服务器崩溃。这是在普通 SQL 中使用传递给 EF Core 客户端的 bool 和在 mongo 上使用提到的属性建立的。

另外,我查看了JsonIgnore。但是,这意味着我必须提前知道我希望忽略哪些元素。

我正在寻找可以忽略所有未知元素的东西。这将允许灵活地将元素添加到连接到同一数据库的上下文中,而不会影响以前版本的操作(或者不必返回并使用 JsonIgnore 编辑旧版本,这可能会成为相当大的负担)

【问题讨论】:

定义额外的元素?你正在尝试或想要做什么。这将使非 mongo DB 程序员更容易帮助您 基本上 CosmosDB 没有预定义的类设置(它基本上存储原始 json)。因此,将来如果我们向数据库上下文类添加更多元素,我们不希望我们的服务器崩溃。这是在普通 SQL 中使用传递给 EF Core 客户端的 bool 和在 mongo 上使用提到的属性建立的。 能否提供样例输入输出? 所以,假设您有一个 json 字符串,您的 asp 服务器从文档数据库接收到该字符串。然后它将尝试将 json 解析为您预先设置的类。当您必须维护以前版本的类时会出现问题(为了与旧版本的前端兼容)这设置了一个限制,即我们不能更改或删除已经建立的元素,除非发布早期版本的修补程序。但是,从历史上看,我们能够向给定的类添加元素,因为我们的应用程序的早期版本被设置为忽略额外的元素。 【参考方案1】:

很抱歉在这个问题上浪费了大家的时间。我决定自己做一个检查,似乎 cosmos 核心默认忽略额外的元素,这取决于你如何看待它,这可能是好是坏。重要的是要注意,如果您将其切换到 mongo 包装器而不是核心,它将引发异常。

【讨论】:

是的,可以猜到正常的序列化会忽略 - 不用担心!

以上是关于ASP.NET cosmosDB,忽略额外的元素?的主要内容,如果未能解决你的问题,请参考以下文章

在 cosmos db 和 asp.net core 中处理请求时发生未处理的异常

Asp.net:如何在会员数据库中添加额外的用户详细信息?

如何使用 ASP.NET 从后面的代码中添加一个额外的 css 类?

Asp.net 身份额外的用户信息,如电子邮件等

当 ASP.NET 忽略 CustomValidator 时,您会怀疑啥?

ASP.NET Core 托管环境变量被忽略