使用 MongoDb 和 C# 将架构依赖类转换为无架构文档
假设我们有一个存储客户的文档,其中包含固定字段和额外字段。 所以这里是我们为客户端提供的示例类:
public class Client
{
public string Name{ get; set; }
public string Address{ get; set; }
public List<ExtraField> ExtraFields{ get; set; } //these fields are extra ones
}
在额外的字段类中,我们有这样的东西:
public class ExtraField
{
public string Key{ get; set; }
public string Type { get; set; }
public string Value { get; set; }
}
如果我使用标准驱动程序的行为进行序列化,我会得到这样的东西:
{{Name:VName, Address:VAddress, ExtraFields:[{Key:VKey,Type:VType,
Value:VValue},...]}, document2,...,documentn}
虽然我希望有这样的东西:
{{Name:VName, Address:VAddress, VKey:VValue,...}, document2,...,documentn}
这会改善搜索性能,通常是文档方向的重点。
如何以这种方式自定义序列化?
Let us suppose we have a document to store our client which has fixed and extra fields.
So here goes our sample class for the client:
public class Client
{
public string Name{ get; set; }
public string Address{ get; set; }
public List<ExtraField> ExtraFields{ get; set; } //these fields are extra ones
}
In extra field class we have something like this:
public class ExtraField
{
public string Key{ get; set; }
public string Type { get; set; }
public string Value { get; set; }
}
If I use standard driver's behaviour for serialization I would get smth like this:
{{Name:VName, Address:VAddress, ExtraFields:[{Key:VKey,Type:VType,
Value:VValue},...]}, document2,...,documentn}
While I would like to have something like this:
{{Name:VName, Address:VAddress, VKey:VValue,...}, document2,...,documentn}
This would improve the search performance and is generally the point of document orientation.
How can I customize the serialization to such a way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我解决它的方法(它工作正常)并解决了问题。
Here is the way I solved it (it works fine) and solved the issue.
本质上你只需要自己实现两个方法。第一个根据需要序列化对象,第二个将对象从数据库反序列化到您的
Client
类:1 序列化客户端类:
2 反序列化客户端对象:
3 完整的测试示例:
我在上面添加了您的客户端类的两种方法。
4 数据库中的数据结构:
顺便说一句:查看序列化教程 也是如此。
Essentially you just need to implement two methods yourself. First one to serialize an object as you want and second to deserialize an object from db to your
Client
class back:1 Seialize client class:
2 Deserialize client object:
3 Complete test example:
I've added above two method to your client class.
4 Data structure in a database:
BTW: Take a look into serialization tutorial as well.