【发布时间】:2013-04-05 14:28:03
【问题描述】:
我有一个 BsonDocuments 集合,例如:
MongoCollection<BsonDocument> products;
当我向集合中插入时,我希望成员名称始终为小写。阅读文档后,似乎 ConventionPack 是要走的路。所以,我定义了一个这样的:
public class LowerCaseElementNameConvention : IMemberMapConvention
{
public void Apply(BsonMemberMap memberMap)
{
memberMap.SetElementName(memberMap.MemberName.ToLower());
}
public string Name
{
get { throw new NotImplementedException(); }
}
}
在我得到我的集合实例后,我像这样注册约定:
var pack = new ConventionPack();
pack.Add(new LowerCaseElementNameConvention());
ConventionRegistry.Register(
"Product Catalog Conventions",
pack,
t => true);
不幸的是,这对我的收藏中存储的内容的影响为零。我对其进行了调试,发现从未调用过 Apply 方法。
我需要做些什么不同的事情才能让我的约定发挥作用?
【问题讨论】:
-
您使用的是哪个驱动程序?似乎是一个特定于驱动程序的问题。看起来像 C#,但我可能是错的。我建议为语言/驱动程序添加标签以吸引合适的读者。
-
是的,它是 C# 驱动程序 (v1.8)。
-
酷,我刚刚为你重新标记了它。我们将看看这是否会吸引一些熟悉 C# 驱动程序的人。
-
谢谢。对于 BsonDocument 集合来说,这看起来更像是不可能的。希望我只是错过了一些东西。由于从 BsonDocument 中按名称获取 BsonElements 不支持不区分大小写的搜索,因此在保存后尝试查找元素非常困难。
-
你是在任何 BsonClassMap 之前调用它吗?
标签: c# mongodb mongodb-.net-driver mlab