static MongoTest() { BsonSerializer.RegisterIdGenerator(typeof(string), StringObjectIdGenerator.Instance); var map = new BsonClassMap<Person>(); map.AutoMap(); BsonClassMap.RegisterClassMap(map); }
public void RegisterClassIgnoreExtraFields(Type type) { BsonClassMap cm = new BsonClassMap(type); cm.AutoMap(); //cm.SetIgnoreExtraElements(true); // Let's see if this is the default BsonClassMap.RegisterClassMap(cm); //BsonSerializer.RegisterDiscriminatorConvention(type, new ScalarDiscriminatorConvention("type")); }
public void TestConventionProfileStillUsesDefaults() { var classMap = new BsonClassMap<A>(); classMap.AutoMap(); var memberMap = classMap.GetMemberMap(x => x.S); Assert.IsNotNull(memberMap); }
public void Configure(BsonClassMap <Integration> classMap) { classMap.AutoMap(); classMap.MapIdMember(c => c.Id); classMap.IdMemberMap.SetSerializer(new StringSerializer(BsonType.ObjectId)); classMap.MapMember(c => c.NickName).SetElementName("nickName"); classMap.MapMember(c => c.Props).SetElementName("props"); classMap.MapMember(c => c.Type).SetElementName("type"); }
protected override void ConfigureClassMap(BsonClassMap<DayStackStats> cm) { cm.AutoMap(); cm.SetIgnoreExtraElements(true); cm.SetIdMember(cm.GetMemberMap(c => c.Id)); cm.GetMemberMap(c => c.ProjectId).SetElementName(CommonFieldNames.ProjectId).SetRepresentation(BsonType.ObjectId).SetIdGenerator(new StringObjectIdGenerator()); cm.GetMemberMap(c => c.StackId).SetElementName(CommonFieldNames.StackId).SetRepresentation(BsonType.ObjectId).SetIdGenerator(new StringObjectIdGenerator()); cm.GetMemberMap(c => c.Total).SetElementName(FieldNames.Total); cm.GetMemberMap(c => c.MinuteStats).SetElementName(FieldNames.MinuteStats).SetSerializationOptions(DictionarySerializationOptions.Document); }
public void SetOrder_not_called() { var cm = new BsonClassMap <C>(); cm.AutoMap(); cm.Freeze(); cm.AllMemberMaps.Select(m => m.MemberName).Should().Equal("Id", "X", "Y"); }
protected override void ConfigureClassMap(BsonClassMap <MonthProjectStats> cm) { cm.AutoMap(); cm.SetIgnoreExtraElements(true); cm.SetIdMember(cm.GetMemberMap(c => c.Id)); cm.GetMemberMap(c => c.ProjectId).SetElementName(CommonFieldNames.ProjectId).SetRepresentation(BsonType.ObjectId).SetIdGenerator(new StringObjectIdGenerator()); cm.GetMemberMap(c => c.DayStats).SetElementName(FieldNames.DayStats).SetSerializationOptions(DictionarySerializationOptions.Document); EventStatsHelper.MapStatsClasses(); }
public static void Register(BsonClassMap <BaseState> cm) { cm.AutoMap(); cm.SetIsRootClass(true); cm.SetIgnoreExtraElements(true); cm.MapMember(s => s.Nodes).SetSerializer(new DictionaryInterfaceImplementerSerializer <ConcurrentDictionary <Guid, NodeInformation> >(DictionaryRepresentation.ArrayOfArrays)); cm.MapMember(s => s.Indexes).SetSerializer(new DictionaryInterfaceImplementerSerializer <ConcurrentDictionary <string, Index> >(DictionaryRepresentation.ArrayOfArrays)); cm.MapMember(s => s.ClusterTasks).SetSerializer(new DictionaryInterfaceImplementerSerializer <ConcurrentDictionary <Guid, BaseTask> >(DictionaryRepresentation.ArrayOfArrays)); cm.MapMember(s => s.Locks).SetSerializer(new DictionaryInterfaceImplementerSerializer <ConcurrentDictionary <string, Lock> >(DictionaryRepresentation.ArrayOfArrays)); }
public void TestConventionProfileStillUsesDefaults() { var classMap = new BsonClassMap <A>(); classMap.AutoMap(); var memberMap = classMap.GetMemberMap(x => x.S); Assert.IsNotNull(memberMap); }
public void SetupBsonMapping(BsonClassMap <SRecipe> document) { document.AutoMap(); document.MapField(x => x.Image); // Use the id for the auto-generated db id. // Reserve the identifier field for the original url of the schema object. document.MapIdField(x => x.Id); }
public void ObeysExtraElementsAttribute() { var processor = new ExtraElementsProcessor(); var classMap = new BsonClassMap <ExtraElementsModel>(); classMap.AutoMap(); processor.ApplyMapping(typeof(ExtraElementsModel), classMap); Assert.AreEqual("AdditionalElements", classMap.ExtraElementsMemberMap?.ElementName); }
public void ObeysIgnoreExtraElementsAttribute() { var processor = new ExtraElementsProcessor(); var classMap = new BsonClassMap <IgnoreExtraElementsModel>(); classMap.AutoMap(); processor.ApplyMapping(typeof(IgnoreExtraElementsModel), classMap); Assert.IsTrue(classMap.IgnoreExtraElements); }
public static void Register(BsonClassMap <Condition> cm) { cm.AutoMap(); cm.SetIsRootClass(true); cm.SetIgnoreExtraElements(true); var featureType = typeof(Condition); featureType.Assembly.GetTypes() .Where(type => featureType.IsAssignableFrom(type)).ToList() .ForEach(type => cm.AddKnownType(type)); }
public static void Register(BsonClassMap <User> cm) { cm.AutoMap(); //cm.MapIdField(a ) //cm.MapIdMember(c => c.Username); // cm.MapIdProperty(c => c.Username); // cm.SetIdMember(cm.GetMemberMap(c => c.Username)); cm.SetIgnoreExtraElements(true); cm.SetIgnoreExtraElements(true); }
public override void Map(BsonClassMap <ReceiptItem> config) { config.AutoMap(); config.SetIgnoreExtraElements(true); config.MapProperty(t => t.Title).SetElementName("Title"); config.MapProperty(t => t.Description).SetElementName("Description"); config.MapProperty(t => t.Price).SetElementName("Price") .SetSerializer(new DecimalSerializer(BsonType.Decimal128)); config.MapProperty(t => t.Quantity).SetElementName("Quantity"); }
public void RegisterClassWithDiscriminator(Type type) { string name = _mapper.GetFieldName(type); BsonClassMap cm = new BsonClassMap(type); cm.AutoMap(); cm.SetDiscriminator(name); ExtraRegistrationSteps(type, cm); // Derived classes can implement this if they need to. BsonClassMap.RegisterClassMap(cm); // Don't need to RegisterDiscriminatorConvention for each subclass, only for the base class. //BsonSerializer.RegisterDiscriminatorConvention(type, new ScalarDiscriminatorConvention("type")); }
public void SetOrder_Id_2_X_1_called() { var cm = new BsonClassMap <C>(); cm.AutoMap(); cm.GetMemberMap("Id").SetOrder(2); cm.GetMemberMap("X").SetOrder(1); cm.Freeze(); cm.AllMemberMaps.Select(m => m.MemberName).Should().Equal("X", "Id", "Y"); }
public override void Map(BsonClassMap <Article> cm) { cm.AutoMap(); cm.MapIdProperty(c => c.Id); cm.MapProperty(c => c.Title).SetElementName("title"); cm.MapProperty(c => c.Author).SetElementName("author"); cm.MapProperty(c => c.Summary).SetElementName("summary"); cm.MapProperty(c => c.Content).SetElementName("content"); cm.SetIgnoreExtraElements(true); }
public void TestGetMemberFindsCorrectMember() { var classMap = new BsonClassMap <Entity>(); classMap.AutoMap(); var memberMap = GetIdMemberMap <Entity>(classMap); Assert.IsNotNull(memberMap); Assert.AreEqual("Id", memberMap.MemberName); }
/// <summary> /// Configure the default mapping for the model. /// </summary> protected virtual void ConfigureDetaultTableMappings <TType, TKey>( BsonClassMap <TType> c, Expression <Func <TType, TKey> > idMap) { c.AutoMap(); if (idMap != null) { c.MapIdMember(idMap); } c.SetIgnoreExtraElements(true); }
public static void Register(BsonClassMap <NodeStorage <CindiClusterState> > cm) { cm.AutoMap(); cm.SetIsRootClass(true); cm.MapMember(s => s.Logs).SetSerializer(new DictionaryInterfaceImplementerSerializer <SortedList <int, LogEntry> >(DictionaryRepresentation.ArrayOfArrays)); /*AppDomain.CurrentDomain.GetAssemblies().SelectMany(assem => assem.GetTypes()).Where(type => type.IsSubclassOf(typeof(NodeStorage))).ToList() * .ForEach(type => cm.AddKnownType(type));*/ cm.UnmapMember(c => c.CommandsQueue); cm.SetIgnoreExtraElements(true); }
public override void Map(BsonClassMap <Campaign> config) { config.AutoMap(); config.SetIgnoreExtraElements(true); config.MapField("_name").SetElementName("Name"); config.MapField("_startsAt").SetElementName("StartsAt") .SetSerializer(new DateTimeSerializer(DateTimeKind.Local)); config.MapField("_completesAt").SetElementName("CompletesAt") .SetSerializer(new DateTimeSerializer(DateTimeKind.Local)); }
private MongoEntityModelBuilder GetDefaultEntityModel(Type entityType) { MongoEntityModelBuilder builder = new MongoEntityModelBuilder(); builder.EntityType = entityType; var _bsonClassMap = new BsonClassMap(entityType); _bsonClassMap.AutoMap(); builder.BsonMap = _bsonClassMap; return(builder); }
public override void Map(BsonClassMap <ReceiptItem> config) { config.AutoMap(); config.SetIgnoreExtraElements(true); config.MapField("_title").SetElementName("Title"); config.MapField("_description").SetElementName("Description"); config.MapField("_price").SetElementName("Price") .SetSerializer(new DecimalSerializer(BsonType.Decimal128)); config.MapField("_quantity").SetElementName("Quantity"); }
public override void Map(BsonClassMap <Receipt> config) { config.AutoMap(); config.SetIgnoreExtraElements(true); config.MapProperty(t => t.Date).SetElementName("Date") .SetSerializer(new DateTimeSerializer(DateTimeKind.Local)); config.MapProperty(t => t.Description).SetElementName("Description"); config.MapProperty(t => t.CampaignId).SetElementName("CampaignId"); config.MapProperty(t => t.ReceiptItems).SetElementName("ReceiptItems"); config.MapProperty(t => t.Tags).SetElementName("Tags"); }
public override void Map(BsonClassMap <Receipt> config) { config.AutoMap(); config.SetIgnoreExtraElements(true); config.MapField("_date").SetElementName("Date") .SetSerializer(new DateTimeSerializer(DateTimeKind.Local)); config.MapField("_description").SetElementName("Description"); config.MapField("_campaignId").SetElementName("CampaignId"); config.MapField("_receiptItems").SetElementName("ReceiptItems"); config.MapField("_tags").SetElementName("Tags"); }
static GameService() { foreach (var type in typeof(LoLApi).GetTypeInfo().Assembly.GetTypes()) { if (type.Namespace != null && type.Namespace.EndsWith("DTO")) { var map = new BsonClassMap(type); map.AutoMap(); BsonClassMap.RegisterClassMap(map); } } }
public void ObeysColumnAttributeRemap() { var processor = new MappedPropertiesProcessor(); var classMap = new BsonClassMap <ColumnAttributePropertyModel>(); classMap.AutoMap(); processor.ApplyMapping(typeof(ColumnAttributePropertyModel), classMap); var entityMapper = new EntityMapper <ColumnAttributePropertyModel>(); var mappedProperties = entityMapper.GetEntityMapping(); Assert.IsTrue(mappedProperties.Any(p => p.ElementName == "CustomPropertyName")); }
public override void Map(BsonClassMap <MyClass> cm) { cm.AutoMap(); //every doc has to have an id cm.MapIdField(x => x.Id).SetIdGenerator(new StringObjectIdGenerator()); cm.MapProperty(x => x.SomeProperty) .SetElementName("sp"); // will set the element name to "sp" in the stored documents //unmap the property.. now we won't save it cm.UnmapProperty(x => x.SomeOtherProperty); }
public void ObeysNotMappedAttribute() { var processor = new MappedPropertiesProcessor(); var classMap = new BsonClassMap <NotMappedPropertiesModel>(); classMap.AutoMap(); processor.ApplyMapping(typeof(NotMappedPropertiesModel), classMap); var entityMapper = new EntityMapper <NotMappedPropertiesModel>(); var mappedProperties = entityMapper.GetEntityMapping(); Assert.IsFalse(mappedProperties.Any(p => p.ElementName == "NotMapped")); }
public void TestConventionProfileStillUsesDefaults() { #pragma warning disable 618 var conventions = new ConventionProfile(); conventions.SetElementNameConvention(new CamelCaseElementNameConvention()); BsonClassMap.RegisterConventions(conventions, t => t == typeof(A)); #pragma warning restore 618 var classMap = new BsonClassMap<A>(); classMap.AutoMap(); var memberMap = classMap.GetMemberMap(x => x.S); Assert.IsNotNull(memberMap); }
public void TestConventionProfileStillUsesDefaults() { #pragma warning disable 618 var conventions = new ConventionProfile(); conventions.SetElementNameConvention(new CamelCaseElementNameConvention()); BsonClassMap.RegisterConventions(conventions, t => t == typeof(A)); #pragma warning restore 618 var classMap = new BsonClassMap <A>(); classMap.AutoMap(); var memberMap = classMap.GetMemberMap(x => x.S); Assert.IsNotNull(memberMap); }
public static void Register(BsonClassMap <Step> cm) { cm.AutoMap(); cm.SetIgnoreExtraElements(true); // cm.MapIdMember(c => c.Id); //cm.SetIdMember(cm.GetMemberMap(c => c.Id)); //cm.SetIgnoreExtraElements(true); /*cm.UnmapMember(c => c.Status); * cm.UnmapMember(c => c.IsComplete); * cm.UnmapMember(c => c.Outputs); * cm.UnmapMember(c => c.TestResults); * cm.UnmapMember(c => c.Journal);*/ }
public static bool RegisterClassMap(Type classType) { if (BsonClassMap.IsClassMapRegistered(classType)) return false; var classMap = new BsonClassMap(classType); // start with auto map classMap.AutoMap(); // ignore extra elements for smooth schema change classMap.SetIgnoreExtraElements(true); // unmap all members which has mongodb.ignore attribute var deletingMembers = classMap.DeclaredMemberMaps.Where(m => { return TrackablePropertyAttribute.GetParameter(m.MemberInfo, "mongodb.ignore") != null; }).ToList(); foreach (var m in deletingMembers) classMap.UnmapMember(m.MemberInfo); // set default ignore for saving spaces foreach (var memberMap in classMap.DeclaredMemberMaps) { var mt = memberMap.MemberType; var defaultValue = mt.IsValueType ? Activator.CreateInstance(mt) : null; memberMap.SetDefaultValue(defaultValue); memberMap.SetIgnoreIfDefault(true); } try { BsonClassMap.RegisterClassMap(classMap); } catch (ArgumentException) { // if duplicate key exists return false; } return true; }
protected static void ConfigureErrorClassMap(BsonClassMap<OldModels.Error> cm) { cm.AutoMap(); cm.SetIgnoreExtraElements(true); cm.SetIdMember(cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId).SetIdGenerator(new StringObjectIdGenerator())); cm.GetMemberMap(p => p.OrganizationId).SetElementName(ErrorFieldNames.OrganizationId).SetRepresentation(BsonType.ObjectId); cm.GetMemberMap(c => c.ErrorStackId).SetElementName(ErrorFieldNames.ErrorStackId).SetRepresentation(BsonType.ObjectId); cm.GetMemberMap(c => c.ProjectId).SetElementName(ErrorFieldNames.ProjectId).SetRepresentation(BsonType.ObjectId); cm.GetMemberMap(c => c.OccurrenceDate).SetElementName(ErrorFieldNames.OccurrenceDate).SetSerializer(new UtcDateTimeOffsetSerializer()); cm.GetMemberMap(c => c.Tags).SetElementName(ErrorFieldNames.Tags).SetIgnoreIfNull(true).SetShouldSerializeMethod(obj => ((OldModels.Error)obj).Tags.Any()); cm.GetMemberMap(c => c.UserEmail).SetElementName(ErrorFieldNames.UserEmail).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.UserName).SetElementName(ErrorFieldNames.UserName).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.UserDescription).SetElementName(ErrorFieldNames.UserDescription).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.RequestInfo).SetElementName(ErrorFieldNames.RequestInfo).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.ExceptionlessClientInfo).SetElementName(ErrorFieldNames.ExceptionlessClientInfo).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.Modules).SetElementName(ErrorFieldNames.Modules).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.EnvironmentInfo).SetElementName(ErrorFieldNames.EnvironmentInfo).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.IsFixed).SetElementName(ErrorFieldNames.IsFixed).SetIgnoreIfDefault(true); cm.GetMemberMap(c => c.IsHidden).SetElementName(ErrorFieldNames.IsHidden).SetIgnoreIfDefault(true); if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.ErrorInfo))) { BsonClassMap.RegisterClassMap<OldModels.ErrorInfo>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.Message).SetElementName(ErrorFieldNames.Message).SetIgnoreIfNull(true); cmm.GetMemberMap(c => c.Type).SetElementName(ErrorFieldNames.Type); cmm.GetMemberMap(c => c.Code).SetElementName(ErrorFieldNames.Code); cmm.GetMemberMap(c => c.ExtendedData).SetElementName(ErrorFieldNames.ExtendedData).SetShouldSerializeMethod(obj => ((OldModels.ErrorInfo)obj).ExtendedData.Any()); cmm.GetMemberMap(c => c.Inner).SetElementName(ErrorFieldNames.Inner); cmm.GetMemberMap(c => c.StackTrace).SetElementName(ErrorFieldNames.StackTrace).SetShouldSerializeMethod(obj => ((OldModels.ErrorInfo)obj).StackTrace.Any()); cmm.GetMemberMap(c => c.TargetMethod).SetElementName(ErrorFieldNames.TargetMethod).SetIgnoreIfNull(true); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.RequestInfo))) { BsonClassMap.RegisterClassMap<OldModels.RequestInfo>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.UserAgent).SetElementName(ErrorFieldNames.UserAgent); cmm.GetMemberMap(c => c.HttpMethod).SetElementName(ErrorFieldNames.HttpMethod); cmm.GetMemberMap(c => c.IsSecure).SetElementName(ErrorFieldNames.IsSecure); cmm.GetMemberMap(c => c.Host).SetElementName(ErrorFieldNames.Host); cmm.GetMemberMap(c => c.Port).SetElementName(ErrorFieldNames.Port); cmm.GetMemberMap(c => c.Path).SetElementName(ErrorFieldNames.Path); cmm.GetMemberMap(c => c.Referrer).SetElementName(ErrorFieldNames.Referrer).SetIgnoreIfNull(true); cmm.GetMemberMap(c => c.ClientIpAddress).SetElementName(ErrorFieldNames.ClientIpAddress); cmm.GetMemberMap(c => c.Cookies).SetElementName(ErrorFieldNames.Cookies).SetShouldSerializeMethod(obj => ((RequestInfo)obj).Cookies.Any()); cmm.GetMemberMap(c => c.PostData).SetElementName(ErrorFieldNames.PostData).SetShouldSerializeMethod(obj => ShouldSerializePostData(obj as RequestInfo)); cmm.GetMemberMap(c => c.QueryString).SetElementName(ErrorFieldNames.QueryString).SetShouldSerializeMethod(obj => ((OldModels.RequestInfo)obj).QueryString.Any()); cmm.GetMemberMap(c => c.ExtendedData).SetElementName(ErrorFieldNames.ExtendedData).SetShouldSerializeMethod(obj => ((OldModels.RequestInfo)obj).ExtendedData.Any()); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.ExceptionlessClientInfo))) { BsonClassMap.RegisterClassMap<OldModels.ExceptionlessClientInfo>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.Version).SetElementName(ErrorFieldNames.Version); cmm.GetMemberMap(c => c.InstallIdentifier).SetElementName(ErrorFieldNames.InstallIdentifier); cmm.GetMemberMap(c => c.InstallDate).SetElementName(ErrorFieldNames.InstallDate); cmm.GetMemberMap(c => c.StartCount).SetElementName(ErrorFieldNames.StartCount); cmm.GetMemberMap(c => c.SubmitCount).SetElementName(ErrorFieldNames.SubmitCount); cmm.GetMemberMap(c => c.Platform).SetElementName(ErrorFieldNames.Platform); cmm.GetMemberMap(c => c.SubmissionMethod).SetElementName(ErrorFieldNames.SubmissionMethod); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.EnvironmentInfo))) { BsonClassMap.RegisterClassMap<OldModels.EnvironmentInfo>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.ProcessorCount).SetElementName(ErrorFieldNames.ProcessorCount); cmm.GetMemberMap(c => c.TotalPhysicalMemory).SetElementName(ErrorFieldNames.TotalPhysicalMemory); cmm.GetMemberMap(c => c.AvailablePhysicalMemory).SetElementName(ErrorFieldNames.AvailablePhysicalMemory); cmm.GetMemberMap(c => c.CommandLine).SetElementName(ErrorFieldNames.CommandLine); cmm.GetMemberMap(c => c.ProcessName).SetElementName(ErrorFieldNames.ProcessName); cmm.GetMemberMap(c => c.ProcessId).SetElementName(ErrorFieldNames.ProcessId); cmm.GetMemberMap(c => c.ProcessMemorySize).SetElementName(ErrorFieldNames.ProcessMemorySize); cmm.GetMemberMap(c => c.ThreadName).SetElementName(ErrorFieldNames.ThreadName).SetIgnoreIfNull(true); cmm.GetMemberMap(c => c.ThreadId).SetElementName(ErrorFieldNames.ThreadId); cmm.GetMemberMap(c => c.Architecture).SetElementName(ErrorFieldNames.Architecture); cmm.GetMemberMap(c => c.OSName).SetElementName(ErrorFieldNames.OSName); cmm.GetMemberMap(c => c.OSVersion).SetElementName(ErrorFieldNames.OSVersion); cmm.GetMemberMap(c => c.MachineName).SetElementName(ErrorFieldNames.MachineName); cmm.GetMemberMap(c => c.RuntimeVersion).SetElementName(ErrorFieldNames.RuntimeVersion); cmm.GetMemberMap(c => c.IpAddress).SetElementName(ErrorFieldNames.IpAddress); cmm.GetMemberMap(c => c.ExtendedData).SetElementName(ErrorFieldNames.ExtendedData).SetShouldSerializeMethod(obj => ((OldModels.EnvironmentInfo)obj).ExtendedData.Any()); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.Method))) { BsonClassMap.RegisterClassMap<OldModels.Method>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.DeclaringNamespace).SetElementName(ErrorFieldNames.DeclaringNamespace); cmm.GetMemberMap(c => c.DeclaringType).SetElementName(ErrorFieldNames.DeclaringType); cmm.GetMemberMap(c => c.Name).SetElementName(ErrorFieldNames.Name); cmm.GetMemberMap(c => c.ModuleId).SetElementName(ErrorFieldNames.ModuleId); cmm.GetMemberMap(c => c.IsSignatureTarget).SetElementName(ErrorFieldNames.IsSignatureTarget); cmm.GetMemberMap(c => c.ExtendedData).SetElementName(ErrorFieldNames.ExtendedData).SetShouldSerializeMethod(obj => ((OldModels.Method)obj).ExtendedData.Any()); cmm.GetMemberMap(c => c.GenericArguments).SetElementName(ErrorFieldNames.GenericArguments).SetShouldSerializeMethod(obj => ((Method)obj).GenericArguments.Any()); cmm.GetMemberMap(c => c.Parameters).SetElementName(ErrorFieldNames.Parameters).SetShouldSerializeMethod(obj => ((OldModels.Method)obj).Parameters.Any()); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.Parameter))) { BsonClassMap.RegisterClassMap<OldModels.Parameter>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.Name).SetElementName(ErrorFieldNames.Name); cmm.GetMemberMap(c => c.Type).SetElementName(ErrorFieldNames.Type); cmm.GetMemberMap(c => c.TypeNamespace).SetElementName(ErrorFieldNames.TypeNamespace); cmm.GetMemberMap(c => c.ExtendedData).SetElementName(ErrorFieldNames.ExtendedData).SetShouldSerializeMethod(obj => ((OldModels.Parameter)obj).ExtendedData.Any()); cmm.GetMemberMap(c => c.GenericArguments).SetElementName(ErrorFieldNames.GenericArguments).SetShouldSerializeMethod(obj => ((OldModels.Parameter)obj).GenericArguments.Any()); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.StackFrame))) { BsonClassMap.RegisterClassMap<OldModels.StackFrame>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.FileName).SetElementName(ErrorFieldNames.FileName).SetIgnoreIfNull(true); cmm.GetMemberMap(c => c.LineNumber).SetElementName(ErrorFieldNames.LineNumber).SetIgnoreIfDefault(true); cmm.GetMemberMap(c => c.Column).SetElementName(ErrorFieldNames.Column).SetIgnoreIfDefault(true); }); } if (!BsonClassMap.IsClassMapRegistered(typeof(OldModels.Module))) { BsonClassMap.RegisterClassMap<OldModels.Module>(cmm => { cmm.AutoMap(); cmm.SetIgnoreExtraElements(true); cmm.GetMemberMap(c => c.ModuleId).SetElementName(ErrorFieldNames.ModuleId).SetIgnoreIfDefault(true); cmm.GetMemberMap(c => c.Name).SetElementName(ErrorFieldNames.Name); cmm.GetMemberMap(c => c.Version).SetElementName(ErrorFieldNames.Version).SetIgnoreIfNull(true); cmm.GetMemberMap(c => c.IsEntry).SetElementName(ErrorFieldNames.IsEntry).SetIgnoreIfDefault(true); cmm.GetMemberMap(c => c.CreatedDate).SetElementName(ErrorFieldNames.CreatedDate); cmm.GetMemberMap(c => c.ModifiedDate).SetElementName(ErrorFieldNames.ModifiedDate); cmm.GetMemberMap(c => c.ExtendedData).SetElementName(ErrorFieldNames.ExtendedData).SetShouldSerializeMethod(obj => ((OldModels.Module)obj).ExtendedData.Any()); }); } }
protected static void ConfigureErrorStackClassMap(BsonClassMap<Stack> cm) { cm.AutoMap(); cm.SetIgnoreExtraElements(true); cm.SetIdMember(cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId).SetIdGenerator(new StringObjectIdGenerator())); cm.GetMemberMap(p => p.OrganizationId).SetElementName(ErrorStackFieldNames.OrganizationId).SetRepresentation(BsonType.ObjectId); cm.GetMemberMap(c => c.ProjectId).SetRepresentation(BsonType.ObjectId).SetElementName(ErrorStackFieldNames.ProjectId); cm.GetMemberMap(c => c.SignatureHash).SetElementName(ErrorStackFieldNames.SignatureHash); cm.GetMemberMap(c => c.SignatureInfo).SetElementName(ErrorStackFieldNames.SignatureInfo); cm.GetMemberMap(c => c.FixedInVersion).SetElementName(ErrorStackFieldNames.FixedInVersion).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.DateFixed).SetElementName(ErrorStackFieldNames.DateFixed).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.Title).SetElementName(ErrorStackFieldNames.Title); cm.GetMemberMap(c => c.TotalOccurrences).SetElementName(ErrorStackFieldNames.TotalOccurrences); cm.GetMemberMap(c => c.FirstOccurrence).SetElementName(ErrorStackFieldNames.FirstOccurrence); cm.GetMemberMap(c => c.LastOccurrence).SetElementName(ErrorStackFieldNames.LastOccurrence); cm.GetMemberMap(c => c.Description).SetElementName(ErrorStackFieldNames.Description).SetIgnoreIfNull(true); cm.GetMemberMap(c => c.IsHidden).SetElementName(ErrorStackFieldNames.IsHidden).SetIgnoreIfDefault(true); cm.GetMemberMap(c => c.IsRegressed).SetElementName(ErrorStackFieldNames.IsRegressed).SetIgnoreIfDefault(true); cm.GetMemberMap(c => c.DisableNotifications).SetElementName(ErrorStackFieldNames.DisableNotifications).SetIgnoreIfDefault(true); cm.GetMemberMap(c => c.OccurrencesAreCritical).SetElementName(ErrorStackFieldNames.OccurrencesAreCritical).SetIgnoreIfDefault(true); cm.GetMemberMap(c => c.References).SetElementName(ErrorStackFieldNames.References).SetShouldSerializeMethod(obj => ((OldModels.ErrorStack)obj).References.Any()); cm.GetMemberMap(c => c.Tags).SetElementName(ErrorStackFieldNames.Tags).SetShouldSerializeMethod(obj => ((OldModels.ErrorStack)obj).Tags.Any()); }
public static bool RegisterTrackablePocoMap(Type trackablePocoType) { if (BsonClassMap.IsClassMapRegistered(trackablePocoType)) return false; var classMap = new BsonClassMap(trackablePocoType); var pocoType = TrackableResolver.GetPocoType(trackablePocoType); // start with auto map classMap.AutoMap(); // ignore extra elements for smooth schema change classMap.SetIgnoreExtraElements(true); // unmap all members which T doesn't have var propertyNames = new HashSet<string>(pocoType.GetProperties().Select(p => p.Name)); var deletingMembers = classMap.DeclaredMemberMaps.Where(m => { var propertyInfo = m.MemberInfo as PropertyInfo; return propertyInfo == null || propertyNames.Contains(propertyInfo.Name) == false; }).ToList(); foreach (var m in deletingMembers) classMap.UnmapMember(m.MemberInfo); // set default ignore for saving spaces foreach (var memberMap in classMap.DeclaredMemberMaps) { var mt = memberMap.MemberType; var defaultValue = mt.IsValueType ? Activator.CreateInstance(mt) : null; memberMap.SetDefaultValue(defaultValue); memberMap.SetIgnoreIfDefault(true); } // tell customized id to mongo-db var identityColumn = pocoType.GetProperties().FirstOrDefault( p => TrackablePropertyAttribute.GetParameter(p, "mongodb.identity") != null); if (identityColumn != null) { classMap.MapIdProperty(identityColumn.Name); } try { BsonClassMap.RegisterClassMap(classMap); } catch (ArgumentException) { // if duplicate key exists return false; } return true; }