Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongo c#驱动程序为泛型类型自定义序列化_C#_Mongodb_Mongodb .net Driver - Fatal编程技术网

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

Mongo c#驱动程序为泛型类型自定义序列化,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我对mongo c#driver有些意见。我有这样的课: 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;

我对mongo c#driver有些意见。我有这样的课:

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; }
}
我真正想要的是让文档中实体对象的所有属性与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


谢谢你的帮助

只需使用包含所有必需DB字段的基本类型的子类即可

public class abstract MongoEntityBase
{
    public ObjectId Id {get; set;}
    public DateTime CreatedAt { get; set; }
    public DateTime UpdatedAt { get; set; }
    public int Version { get; set; }
}
然后,使用它:

public class Person : MongoEntityBase
{
    public string Email { get; set; }
    public string Name { get; set; }
}

10gen提供的MongoDB C#驱动程序可以很好地使用这种模式。

无法配置内置序列化程序来生成所需的文档格式(其中实体字段提升了一级)

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


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

您是否尝试过创建基类的子类而不是使用泛型类型?Thx,我添加了“p.s.”部分,解释了我正在寻找的解决方案。谢谢,我知道这个解决方案,但我确实需要MongoEntity作为泛型,我要找的是一些驱动程序配置或编写自定义序列化程序,也许是一些动态的解决方法。你看过吗
public class Person : MongoEntityBase
{
    public string Email { get; set; }
    public string Name { get; set; }
}