BsonClassMap.RegisterClassMap<MyClass>();
我想自动映射给定命名空间的所有类,而无需为每个类显式写下 RegisterClassMap。目前可以吗?
最佳答案
你不需要写 BsonClassMap.RegisterClassMap<MyClass>();
,因为默认情况下所有类都会自动映射。
您应该使用 RegisterClassMap
当您需要自定义序列化时:
BsonClassMap.RegisterClassMap<MyClass>(cm => {
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.SomeProperty));
});
您还可以使用属性来创建管理序列化(对我来说它看起来更原生):
[BsonId] // mark property as _id
[BsonElement("SomeAnotherName", Order = 1)] //set property name , order
[BsonIgnoreExtraElements] // ignore extra elements during deserialization
[BsonIgnore] // ignore property on insert
您还可以创建在自动映射期间使用的全局规则,例如:
var myConventions = new ConventionProfile();
myConventions.SetIdMemberConvention(new NoDefaultPropertyIdConvention());
BsonClassMap.RegisterConventions(myConventions, t => true);
我只使用属性和约定来管理序列化过程。
希望对您有所帮助。
关于c# - 如何为 MongoDb 命名空间中的所有类注册类映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505591/