我刚刚将我的Mongo-C#驱动程序从1.6.1更新到1.8.1,我意识到它们已经使许多功能过时了。由于弃用而我看到的一个错误如下:
会议资料已经过时,请替换为 IConventionsPack。
现在,问题是没有太多关于IConeventionPack的文档或如何使用它。我发布了一个小代码片段,任何人都可以建议如何使用IConventionPack来处理这个问题?
var conventions = new ConventionProfile();
conventions.SetIgnoreIfNullConvention(new AlwaysIgnoreIfNullConvention());
BsonClassMap.RegisterConventions(conventions, t => true);
感谢。
答案 0 :(得分:6)
嗯,事实证明,IConventionPack没有库提供的实现。我不得不手写IConventionPack的一个实现。这是代码示例:
public class OpusOneConvention : IConventionPack
{
public IEnumerable<IConvention> Conventions
{
get { return new List<IConvention> { new IgnoreIfNullConvention(true) }; }
}
}
其次是:
var conventions = new OpusOneConvention();
ConventionRegistry.Register("IgnoreIfNull", conventions, t => true);
基本上,所有的约定都将作为IEnumerable,然后ConventionRegistry将负责注册它们。
感谢。
注意:从版本1.8.1.20开始,您可以按如下方式使用ConventionPack:
var conventions = new ConventionPack();
conventions.Add(new IgnoreIfNullConvention(true));
ConventionRegistry.Register("IgnoreIfNull", conventions, x => true);