在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
http://blog.sina.com.cn/s/blog_927f3c2401011937.html 图形工具 http://api.mongodb.org/csharp/current/html/R_Project_CSharpDriverDocs.htm C#API http://docs.mongodb.org/manual/reference/method/ Shell命令 http://docs.mongodb.org/manual/ MongoDB官方文档 http://blog.michaelckennedy.net/2013/04/08/optimistic-concurrency-in-mongodb-using-net-and-csharp/ MongoDB.Kennedy https://mongodb-documentation.readthedocs.org/en/latest/ecosystem/tutorial/serialize-documents-with-the-csharp-driver.html Serialize Documents with the CSharp Driver(使用c#对实体进行序列化) https://www.mongodb.com/thank-you/download/mongodb-enterprise 官网下载地址 http://www.ttlsa.com/mms/follow-me-to-use-mongodb-mms-services/ 随我来使用mongodb mms服务 当类体结构改变,删除了某个属性,或者某个属性的类型发生了改变? 1、属性的类型发生了改变 1 public class Address { public ObjectId Id; public string ZipCode; } 2 3 public class ZipCodeSerializer : BsonBaseSerializer { public override object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options) { var bsonType = bsonReader.CurrentBsonType; switch (bsonType) { case BsonType.Null: bsonReader.ReadNull(); return null; case BsonType.String: return bsonReader.ReadString(); case BsonType.Int32: return bsonReader.ReadInt32().ToString(); default: var message = string.Format("ZipCodeSerializer expects to find a String or an Int32, not a {0}.", bsonType); throw new BsonSerializationException(message); } } public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options) { if (value == null) { bsonWriter.WriteNull(); } else { bsonWriter.WriteString((string)value); } } } 4 5 BsonClassMap.RegisterClassMap<Address>(cm => { cm.AutoMap(); cm.GetMemberMap(a => a.ZipCode).SetSerializer(new ZipCodeSerializer()); }); 6 2、删除了某个属性 1 var allDocuments = collectionToUpdate .FindAll();foreach(var document in allDocuments ){var oldFieldValue = document ["OldFieldName"];if(!document.Contains("NewFieldName")) document.Add("NewFieldName", oldFieldValue); document.Remove("OldFieldName"); collectionToUpdate.Save(document);} 2 3 3、使用newtonsoft.json转换为json 4 5 class ObjectId Converter:JsonConverter{publicoverridevoidWriteJson(JsonWriter writer,object value,JsonSerializer serializer){ serializer.Serialize(writer, value.ToString());}publicoverrideobjectReadJson(JsonReader reader,Type objectType,object existingValue,JsonSerializer serializer){thrownewNotImplementedException();}publicoverride bool CanConvert(Type objectType){returntypeof(ObjectId).IsAssignableFrom(objectType);//return true;}} 6 7 public class ObjectIdConverter : TypeConverter 8 9 { 10 11 public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) 12 13 { 14 15 if (sourceType == typeof(string)) 16 17 { 18 19 return true; 20 21 } 22 23 return base.CanConvertFrom(context, sourceType); 24 25 } 26 27 public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) 28 29 { 30 31 if (value is string) 32 33 return ObjectId.Parse((string)value); 34 35 return base.ConvertFrom(context, culture, value); 36 37 } 38 39 // Overrides the ConvertTo method of TypeConverter. 40 41 public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) 42 43 { 44 45 if (destinationType == typeof(string)) 46 47 { 48 49 return ((ObjectId)value).ToString(); 50 51 } 52 53 return base.ConvertTo(context, culture, value, destinationType); 54 55 } 56 57 } 58 使用:[TypeConverter(typeof(ObjectIdConverter))] 4、实体中排除某些字段,不写入到集合中 publicclassMyClass{ [BsonIgnore]publicstringSomeProperty{get;set;}} 或者使用初始化代码的形式,设置映射关系 BsonClassMap.RegisterClassMap<MyClass>(cm=>{cm.AutoMap();cm.UnmapProperty(c=>c.SomeProperty);}); 5、在连接参数中设置用户名和密码 http://docs.mongodb.org/ecosystem/tutorial/authenticate-with-csharp-driver/ 6、mongodb中时间为当前小时数 减 8 分 析:存储在mongodb中的时间是标准时间UTC +0:00 而咱们中国的失去是+8.00 。 解决方法:在datetime属性上增加特性 [BsonDateTimeOptions(Kind = DateTimeKind.Local)] public DateTime Birth{get;set;} |
请发表评论