mongodb(v1.5)用のc#ドライバーを使用してこの問題が発生しています
オブジェクトをシリアル化するときにこれと同様の問題が発生しましたが、アプリケーションの起動時にエンティティをmongodbに登録することで、これまで常に解決できました。デシリアライズで問題が発生しているドキュメントは、2レベルの深さでネストされます(つまり、ドキュメント内に埋め込まれたドキュメント内に埋め込まれたドキュメント)。
クラスは次のようになります。
[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ルールを破っているに違いないと思います。このためにカスタムシリアライザーを作成する必要がないことを願っています...ドキュメントが2レベルの深さでネストされていることを除けば、これまでに行ったことのないことは何もしていません。そして、それはまったく問題なくドキュメントを作成している、それは私が問題を抱えているのは私がそれを取り戻そうとしたときだけである。
どんな助けでも大歓迎です。