【发布时间】:2012-09-11 19:47:08
【问题描述】:
我在使用 mongodb (v1.5) 的 c# 驱动程序时遇到了这个问题
我在序列化对象时遇到过类似的问题,但过去总是能够通过在应用程序启动期间向 mongodb 注册实体来解决这个问题。它在反序列化时遇到问题的文档嵌套了两层深度(即嵌入在文档中的文档嵌入在文档中)。
类如下所示:
[BsonIgnoreExtraElements]
public class FooItem : IFooItem
{
[BsonId]
public ObjectId Id { get; set; }
public IFooAccessRestrictions AccessRestrictions { get; set; }
}
public class FooAccessRestrictions : IFooAccessRestrictions
{
[BsonId]
public ObjectId Id { get; set; }
public IAccessPermission[] AccessList { get; set; }
}
public class AccessPermission : IAccessPermission
{
[BsonId]
public ObjectId Id { get; set; }
public DateTimeOffset CreatedOn { get; set; }
public ObjectId CreatedBy { get; set; }
public AccessPermissionType Type { get; set; }
public string PermittedIdentity { get; set; }
public AccessPermission()
{
}
public AccessPermission(ObjectId createdBy, AccessPermissionType type, string permittedIdentity)
{
CreatedOn = DateTime.Now;
CreatedBy = createdBy;
Type = type;
PermittedIdentity = permittedIdentity;
}
}
这是 AccessPermission 类,它存在“找不到类型的序列化程序”问题。我尝试在应用程序启动时向 mongodb 注册实体,如下所示:
BsonClassMap.RegisterClassMap<FooAccessRestrictions>();
BsonClassMap.RegisterClassMap<AccessPermission>();
我猜我一定是在这里违反了一些我不知道的 mongodb 规则。我希望我不需要为此创建自定义序列化程序......据我所知,我没有做任何我以前没有做过的事情,除了文档嵌套了两层深。它在创建文档时一点问题都没有,只是当我尝试将其恢复时,我遇到了问题。
任何帮助将不胜感激。
【问题讨论】:
标签: c# mongodb serialization deserialization