ConventionProfile是过时的使用,而不是使用

时间:2013-04-30 21:34:43

标签: c# mongodb mongodb-.net-driver

我刚刚将我的Mongo-C#驱动程序从1.6.1更新到1.8.1,我意识到它们已经使许多功能过时了。由于弃用而我看到的一个错误如下:

  

会议资料已经过时,请替换为   IConventionsPack。

现在,问题是没有太多关于IConeventionPack的文档或如何使用它。我发布了一个小代码片段,任何人都可以建议如何使用IConventionPack来处理这个问题?

var conventions = new ConventionProfile();
           conventions.SetIgnoreIfNullConvention(new AlwaysIgnoreIfNullConvention());
           BsonClassMap.RegisterConventions(conventions, t => true);

感谢。

1 个答案:

答案 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);