MongoDB是否可以使用不带BsonDateTimeOptions属性的ClassMap为POCO类中的C#内部对象DataTime属性设置DateTimeSerializer?

示例:

public class Entity
{
    public string Id { get; init; }
    
    public string Currency { get; init; }
    
    public IEnumerable<InnerEtity> InnerEtities { get; init;}
}
        
public class InnerEtity
{
    //Don't want to use this attribute
    [BsonDateTimeOptions(DateOnly = true)]
    public DateTime Date { get; set; }
        
    public double Value { get; set; }
}

推荐答案

您可以使用"命令式"映射而不是使用属性,例如.

BsonClassMap.RegisterClassMap<InnerEtity>(classMap =>
{
    classMap.AutoMap();
    classMap.GetMemberMap(c => c.Date).SetSerializer(new DateTimeSerializer(dateOnly: true));
});

这样,您就不需要使用属性进行映射,并使类保持"MongoDB不可知". 请注意,您需要在 bootstrap 应用程序时运行代码,以便MongoDB C#驱动程序在第一次使用实体时已经知道类映射.

Csharp相关问答推荐

从C#网站调用时找不到存储过程

EF Core 8—应用客户端投影后无法转换集操作

如何在C#中删除一个特殊字符,如"使用Regex"

try 在Blazor项目中生成html

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

与C#中的Zip列表并行

模型绑定RazorPage表单

如果设置了另一个属性,则Newtonsoft JSON忽略属性

如何在用户在线时限制令牌生成?

依赖项注入、工厂方法和处置困境

WinUI 3中DoubleCollection崩溃应用程序类型的依赖属性

有条件地定义预处理器指令常量

如何在GRPC代码First服务的返回类型上使用多态性?

如何从Entity Framework Core中填充ListIInterface

在等待OnGetAsync时打开Razor Page显示微调器

如何使用类似于[SELECT*FROM&Q;&Q;WHERE&Q;]SQL查询的System.Data.Entity创建查询?

如何读取TagHelper属性的文本值?

C#定时器回调对象上下文?

与Visual Studio 2022中的.NET框架相比,如何在.NET Core 6中获取错误输出的窗口句柄

默认架构不存在EF核心迁移