本文整理汇总了C#中BsonClassMap.UnmapMember方法的典型用法代码示例。如果您正苦于以下问题:C# BsonClassMap.UnmapMember方法的具体用法?C# BsonClassMap.UnmapMember怎么用?C# BsonClassMap.UnmapMember使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BsonClassMap
的用法示例。
在下文中一共展示了BsonClassMap.UnmapMember方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RegisterClassMap
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;
}
示例2: IgnoreMembersWithBsonIgnoreAttribute
private void IgnoreMembersWithBsonIgnoreAttribute(BsonClassMap classMap)
{
foreach (var memberMap in classMap.DeclaredMemberMaps.ToList())
{
var ignoreAttribute = (BsonIgnoreAttribute)memberMap.MemberInfo.GetCustomAttributes(typeof(BsonIgnoreAttribute), false).FirstOrDefault();
if (ignoreAttribute != null)
{
classMap.UnmapMember(memberMap.MemberInfo);
}
}
}
示例3: RegisterTrackablePocoMap
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;
}