我最近尝试过使用MongoDb的序列化。基本上,我试图使用驱动程序的序列化程序来存储我的模型,同时试图避免我熟知的模型类和10gen的MongoDb C#驱动程序(v1.2,如果有的话)之间存在任何依赖关系。使用MongoDb的C#驱动程序将额外元素序列化为IDictionary实例
这本身就不成问题。然而,问题在于可以为已知元素并排存储一些对象的(动态)信息。我可以通过使用[BsonExtraElements]
属性来做到这一点,但正如我上面所说,我试图避免将模型耦合到MongoDb。能有这种行为的模型类,实现某个接口:
public interface IHaveMoreInformation
{
IDictionary<string, object> Extra { get; set; }
}
对于这一点,我试图写,使程序在应用程序启动时登记在约定的个人资料自定义约定:
public sealed class ExtraElementsConvention : IExtraElementsMemberConvention
{
#region Implementation of IExtraElementsMemberConvention
public string FindExtraElementsMember(Type type)
{
return typeof(IHaveMoreInformation).IsAssignableFrom(type) ? "Extra" : null;
}
#endregion
}
这是问题开始的地方。驱动程序期望BsonDocument属性(再次,我不想结合)。我希望有办法解决这个问题,并将这些附加信息序列化到一个IDictionary<string,object>
实例中。
我对任何想法都很有帮助。
由于提前,
曼尼
作为对他人的一个提示,您现在可以指定额外的元素作为一个字典,如http://docs.mongodb.org/ecosystem/tutorial/serialize-documents-with-the-csharp-driver/ – 2013-10-21 17:32:08