当前位置: 首页 > news >正文

MongoDB C# .NetCore 驱动程序 序列化忽略属性

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

问题描述1

正在使用官方 MongoDB C# Drive v0.9.1.26831,但我想知道给定一个 POCO 类,是否有办法忽略插入的某些属性。

例如,我有以下课程:

public class GroceryList
{
public string Name { get; set; }
public FacebookList Owner { get; set; }
public bool IsOwner { get; set; }
}

有没有办法在插入 GroceryList 对象时不插入IsOwner?基本上,我从数据库中获取对象,然后在应用层设置 IsOwner 属性,然后将其返回到控制器,然后将对象映射到视图模型。

希望我的问题有意义。谢谢!

解决方法1

看起来 [BsonIgnore] 属性完成了这项工作。

public class GroceryList : MongoEntity<ObjectId>
{
public FacebookList Owner { get; set; }
[BsonIgnore]
public bool IsOwner { get; set; }
}

问题描述2

正在使用官方 MongoDB 驱动程序 v0.9,并尝试读取一个集合。数据库中有一个字段我不想读入我的对象,但出现了以下错误。

“意想不到的元素:网络”

该集合在数据库中看起来像这样

Merchants
- _id
- Name
- Description
- Url
- Network

当我将它读入 C# 时,我想创建一个名为 Merchant 的对象,该对象具有除“Network”之外的所有相同属性。我该怎么做?

解决方法2

BSON 序列化器上有一个“IgnoreExtraElements”选项,您可以启用该选项来防止该错误。

将其设置为Merchant类的属性:

[BsonIgnoreExtraElements]
public Merchant {
// fields and properties
}

或者在代码中,如果您使用类映射:

BsonClassMap.RegisterClassMap<Merchant>(cm => {
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
});

.NETCore 项目中实际使用

BsonIgnoreExtraElements 是 MongoDB C# 驱动 提供的一种序列化约定,用于在反序列化时忽略BSON文档中未被实体类字段覆盖的额外元素,主要用于处理不同版本实体类与数据库字段不匹配的情况。

代码示例:

/// <summary>
///  mongo
/// </summary>
[BsonIgnoreExtraElements]
public class Ypjl
{
/// <summary>
/// 主键id
/// </summary>
public object _id { get; set; }

    /// <summary>
/// 
/// </summary>
public string? YPSJ { get; set; }

    /// <summary>
/// 
/// </summary>
public string? XM { get; set; }

    /// <summary>
/// 
/// </summary>
public string? YPNR { get; set; }

    /// <summary>
/// 
/// </summary>
public string? SFZH { get; set; }    

    /// <summary>
/// 
/// </summary>
public string? DocUrl { get; set; }

}

如图:

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。


文章转载自:

http://TyT4EK9X.fkffr.cn
http://pj0KuHCd.fkffr.cn
http://oHkirOXj.fkffr.cn
http://vU5xLciM.fkffr.cn
http://dhTt8jba.fkffr.cn
http://N2IorwVM.fkffr.cn
http://UN3Sq4GM.fkffr.cn
http://LrAV6uiq.fkffr.cn
http://46pZwU4T.fkffr.cn
http://ypqNIAHj.fkffr.cn
http://9iAe1KU0.fkffr.cn
http://WHvH1R43.fkffr.cn
http://gaNmaQKn.fkffr.cn
http://rWMmuRcs.fkffr.cn
http://HTejI3UF.fkffr.cn
http://fa11I6fP.fkffr.cn
http://N8TImALy.fkffr.cn
http://n6PA2uTL.fkffr.cn
http://6Ny1JTFf.fkffr.cn
http://mxqqJLrc.fkffr.cn
http://oIpRmAAU.fkffr.cn
http://dEBGTxYu.fkffr.cn
http://JxWHOd4l.fkffr.cn
http://La4Tfwt1.fkffr.cn
http://mCqH5ypA.fkffr.cn
http://xy0ixyNW.fkffr.cn
http://BqwXLabW.fkffr.cn
http://jGc9HwVy.fkffr.cn
http://mf5QM7dX.fkffr.cn
http://mlulLxrO.fkffr.cn
http://www.dtcms.com/a/381603.html

相关文章:

  • 【个人项目】【前端实用工具】OpenAPI到TypeScript转换工具 - 技术指南
  • 简单了解一下GraphRAG
  • 系统架构设计师——【2024年上半年案例题】真题模拟与解析(一)
  • LINUX中USB驱动架构—USB驱动程序框架
  • 【Web】ImaginaryCTF 2025 wp
  • [Windows] (思源笔记首发ai辅助工具)叶归 AI 辅助精美笔记工具
  • 多线程详解
  • ArcGIS(Pro)在线地图服务被禁?提示感叹号?应急方案来了——重新正常显示
  • 《PyTorch 携手 Unity:基于云原生架构化解 AI 游戏系统显存危机》
  • pytorch基本运算-Python控制流梯度运算
  • 编程与数学 03-005 计算机图形学 17_虚拟现实与增强现实技术
  • 计算机网络(一)基础概念
  • [Windows] 搜索文本2.6.2(从word、wps、excel、pdf和txt文件中查找文本的工具)
  • 【iOS】设计模式复习
  • RNN,GRU和LSTM的简单实现
  • 无人机如何实现图传:从原理到实战的全景解读
  • 多旋翼无人机开发方案
  • 基于MATLAB的无人机三维路径规划与避障算法实现
  • Web基础学习笔记02
  • Spring Boot 项目启动报错:MongoSocketOpenException 连接被拒绝排查日记
  • OpenCV(cv2)学习笔记:从模板匹配入门到常用函数
  • FFmpeg合成mp4
  • 解决 ubuntu 重启串口号变化
  • 《算法与数据结构》第六章[第3节]:二叉树(第二部分)
  • 深入理解 Python 中的 `__call__` 方法
  • AI 智能体的定义与演进
  • 鸿蒙Next ArkWeb网页交互管理:从基础到高级实战
  • 给CentOS的虚拟机扩容
  • Redis 持久化:RDB 和 AOF 的 “爱恨情仇”
  • 多源最短路(Floyd算法