gpt4 book ai didi

c# - Mongo c# 驱动为泛型自定义序列化

转载 作者:可可西里 更新时间:2023-11-01 09:57:28 25 4
gpt4 key购买 nike

我对 mongo c# 驱动程序有一些疑问。我有这样的类(class):

class MongoEntity<T>
{
public ObjectId Id {get; set;}
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public int Version { get; set; }
public T Entity { get; set; }
}

在序列化我的实体到数据库的过程中,我有这样的文件:

"_id" : "510654cf33d22e1774d5a2a9",
"CreatedAt" : {
"DateTime" : ISODate("2013-01-28T10:37:02.932Z"),
"Ticks" : NumberLong("634949662229321756")
},
"UpdatedAt" : {
"DateTime" : ISODate("2013-01-28T10:37:02.932Z"),
"Ticks" : NumberLong("634949662229321756")
},
"Version" : 1,
"Entity" : {
"EntityKey" : "tom@gmail.com",
"Password" : "ICy5YqxZB1uWSwcVLSNLcA==",
"Email" : "tom@gmail.com",
"Name" : "Tom Anderson"
}

我真正想要的是让我的文档中实体对象的所有属性与 MongoEntity 对象的属性处于同一级别,如下所示:

"_id" : "510654cf33d22e1774d5a2a9",
"CreatedAt" : {
"DateTime" : ISODate("2013-01-28T10:37:02.932Z"),
"Ticks" : NumberLong("634949662229321756")
},
"UpdatedAt" : {
"DateTime" : ISODate("2013-01-28T10:37:02.932Z"),
"Ticks" : NumberLong("634949662229321756")
},
"Version" : 1,
"EntityKey" : "tom@gmail.com",
"Password" : "ICy5YqxZB1uWSwcVLSNLcA==",
"Email" : "tom@gmail.com",
"Name" : "Tom Anderson"

没有实体嵌入对象。我怎样才能以最简单的方式实现它?

附言我真正在寻找的是驱动程序的一些配置或编写自定义序列化程序,也许是一些动态的解决方法,我不想更改当前的类结构 Enteties <-> MongoEntity

谢谢帮助。

最佳答案

无法配置内置序列化程序来生成您想要的文档格式(实体字段被提升一级)。

您将不得不编写一个自定义序列化程序,但这会很困难,因为您要么必须为每个 编写一个新的序列化程序,要么您必须编写一个适用于任何 的复杂序列化程序。

WiredPrairie 的建议(人物:MongoEntityBase)是推荐的解决方案。

关于c# - Mongo c# 驱动为泛型自定义序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14560460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com