Mongodb公约包

如何在c#中使用mongodb ConventionPack我有以下代码:

MongoDatabase Repository = Server.GetDatabase(RepoName); this.Collection = Repository.GetCollection(CollectionName); var myConventions = new ConventionPack(); myConventions.Add(new CamelCaseElementNameConvention()); 

约定包是否自动附加到this.Collection? 当我加载一个新对象时,它会自动保持这种情况吗? 我是否必须在类声明中添加标签(如数据合同)?

您需要在ConventionRegistry注册该包:

 var pack = new ConventionPack(); pack.Add(new CamelCaseElementNameConvention()); ConventionRegistry.Register("camel case", pack, t => t.FullName.StartsWith("Your.Name.Space.")); 

如果要全局应用它,可以用t => true类的简单替换最后一个参数。

序列化和反序列化的工作示例代码(驱动程序1.8.20,mongodb 2.5.0):

 using System; using System.Linq; using MongoDB.Bson; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver; namespace playground { class Simple { public ObjectId Id { get; set; } public String Name { get; set; } public int Counter { get; set; } } class Program { static void Main(string[] args) { MongoClient client = new MongoClient("mongodb://localhost/test"); var db = client.GetServer().GetDatabase("test"); var collection = db.GetCollection("Simple"); var pack = new ConventionPack(); pack.Add(new CamelCaseElementNameConvention()); ConventionRegistry.Register("camel case", pack, t => true); collection.Insert(new Simple { Counter = 1234, Name = "John" }); var all = collection.FindAll().ToList(); Console.WriteLine("Name: " + all[0].Name); } } }