public static void Test_LoadMongoDetail_01() { Trace.WriteLine("Test_LoadMongoDetail_01"); Trace.WriteLine(); RapideDdl.InitMongoClassMap(); if (BsonClassMap.IsClassMapRegistered(typeof(RapideDdl_Base))) { BsonClassMap map = BsonClassMap.LookupClassMap(typeof(RapideDdl_Base)); Trace.WriteLine("change existing class map"); BsonMemberMap memberMap = map.GetMemberMap("infos"); memberMap.SetSerializationOptions(DictionarySerializationOptions.ArrayOfDocuments); } else { Trace.WriteLine("register class map"); BsonClassMap.RegisterClassMap <RapideDdl_Base>(cm => { cm.AutoMap(); cm.GetMemberMap(c => c.infos).SetSerializationOptions(DictionarySerializationOptions.ArrayOfDocuments); }); } Trace.WriteLine(); string query = "{ _id: 35105 }"; MongoCursor <BsonDocument> cursor = MongoCommand.GetDatabase(null, "dl").GetCollection("RapideDdl_Detail").zFind <BsonDocument>(new QueryDocument(BsonSerializer.Deserialize <BsonDocument>(query))); int i = 1; foreach (BsonDocument document in cursor) { BsonDocument document2 = (BsonDocument)document["download"]; RapideDdl_PostDetail postDetail = BsonSerializer.Deserialize <RapideDdl_PostDetail>(document2); //MongoDB.Bson.Serialization.IBsonSerializationOptions options; //MongoDB.Bson.Serialization.BsonSerializer.Serialize() //Serialization.Options //SerializationOptions //MongoDB.Bson.Serialization.Options.RepresentationSerializationOptions //document2 = postDetail.ToBsonDocument(new DictionarySerializationOptions(DictionaryRepresentation.ArrayOfDocuments)); //DictionarySerializationOptions. //BsonClassMap.RegisterClassMap<RapideDdl_PostDetail>(cm => { cm.MapProperty(c => c.SomeProperty); cm.MapProperty(c => c.AnotherProperty); }); //document2 = postDetail.ToBsonDocument(); Trace.WriteLine("document no {0}", i++); //DocumentSerializationOptions options = new DocumentSerializationOptions(); //Trace.WriteLine(postDetail.ToJson(new DictionarySerializationOptions(DictionaryRepresentation.ArrayOfDocuments))); //RapideDdl_PostDetail RapideDdl_Base //BsonClassMap<RapideDdl_Base> map = BsonClassMap.LookupClassMap(typeof(RapideDdl_Base)); //Trace.WriteLine(document.zToJson()); Trace.WriteLine(postDetail.zToJson()); Trace.WriteLine(); } }
public static void ClassInit(XElement xe) { __useUrlCache = xe.zXPathValue("UseUrlCache").zTryParseAs(false); __cacheDirectory = xe.zXPathValue("CacheDirectory"); //__useXml = xe.zXPathValueBool("UseXml", __useXml); //__xmlNodeName = xe.zXPathValue("XmlNodeName"); __useMongo = xe.zXPathValue("UseMongo").zTryParseAs(__useMongo); __mongoServer = xe.zXPathValue("MongoServer", __mongoServer); __mongoDatabase = xe.zXPathValue("MongoDatabase"); __mongoCollectionName = xe.zXPathValue("MongoCollection"); __mongoDocumentItemName = xe.zXPathValue("MongoDocumentItemName"); IDocumentStore_v1 <RapideDdl_HeaderPage> documentStore = null; if (__useMongo) { documentStore = new MongoDocumentStore_v1 <RapideDdl_HeaderPage>(__mongoServer, __mongoDatabase, __mongoCollectionName, __mongoDocumentItemName); RapideDdl.InitMongoClassMap(); } _load = new pb.Web.v1.LoadWebData_v2 <RapideDdl_HeaderPage>(new pb.Web.v1.LoadDataFromWeb_v2 <RapideDdl_HeaderPage>(LoadHeaderPageFromWeb, GetUrlCache()), documentStore); }