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; }

}

如图:

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

相关推荐
.NET修仙日记2 小时前
Acme.ReturnOh:让.NET API返回值处理更优雅,统一响应格式一步到位
c#·.net·webapi
阿蒙Amon3 小时前
C#常用类库-详解YamlDotNet
开发语言·c#
Sunsets_Red6 小时前
乘法逆元的 exgcd 求法
c++·学习·数学·算法·c#·密码学·信息学竞赛
唐青枫6 小时前
深入理解 C#.NET TaskScheduler:为什么大量使用 Work-Stealing
c#·.net
Predestination王瀞潞6 小时前
4.1.1 存储->数据库:MongoDB
数据库·mongodb
人工智能AI技术7 小时前
Claude 3.7 企业版私有化部署技术验证:与 .NET 实战方案
人工智能·c#
呆子也有梦7 小时前
思考篇:积分是存成道具还是直接存数值?——ET/Skynet 框架下,从架构权衡到代码实现全解析
游戏·架构·c#·lua
我是唐青枫7 小时前
深入理解 C#.NET Task.Run:调度原理、线程池机制与性能优化
性能优化·c#·.net
阿蒙Amon8 小时前
C#常用类库-详解NModbus4
开发语言·c#
LFly_ice8 小时前
C# Web 开发从入门到实践
开发语言·前端·c#