private void Name(IPropertyMapper propertyMapper) { propertyMapper.Column("Name"); propertyMapper.Type(NHibernateUtil.String); propertyMapper.Length(100); propertyMapper.NotNullable(false); }
private void OnBeforeMapProperty(IModelInspector mi, PropertyPath member, IPropertyMapper map) { var type = member.LocalMember.GetPropertyOrFieldType(); if (type == typeof(string)) { if (member.LocalMember.Name == "FileName") { map.Length(255); } else { map.Type <DefaultStringType>(); map.Length(50); } } else if (type == typeof(byte[])) { map.Length(Int32.MaxValue / 2); map.Column(x => x.SqlType("varbinary(max)")); } if (member.LocalMember.Name == "DateCreated") { map.Update(false); } }
public static void MapStringAsVarchar(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { var propertyInfo = member.LocalMember as PropertyInfo; if (propertyInfo != null && propertyInfo.PropertyType == typeof(string)) { propertyCustomizer.Type(NHibernateUtil.AnsiString); } }
protected void BeforeMapProperty(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { propertyCustomizer.Column(this.GetNormalizedDbName(member.LocalMember.Name)); if (member.LocalMember.GetPropertyOrFieldType().IsEnum == true) { //propertyCustomizer.Type(Activator.CreateInstance(typeof(EnumStringType<>).MakeGenericType(member.LocalMember.GetPropertyOrFieldType())) as IType); propertyCustomizer.Type(Activator.CreateInstance(typeof(EnumType <>).MakeGenericType(member.LocalMember.GetPropertyOrFieldType())) as IType); } }
/// <summary> /// Applies any conventions required for persistable properties. /// </summary> /// <param name="attributes"> Attributes present on the property. </param> /// <param name="mapper"> The property mapper. </param> /// <param name="property"> The property. </param> /// <param name="propertyType"> The property type. </param> protected virtual void ApplyPropertyConventions(IPropertyMapper mapper, PropertyPath property, Type propertyType, IEnumerable <Attribute> attributes) { mapper.NotNullable(!IsNullable(propertyType, attributes)); if (propertyType.IsEnum) { mapper.Type <Int32Type>(); } }
/// <summary> /// Applies the <see cref="DateTimeOffsetSplitType"/> Composite user type to all <see cref="DateTimeOffset"/> fields in the mapping. /// </summary> /// <remarks> /// Allows the use of <see cref="DateTimeOffset"/> type with databases that do not natively support it. /// User: mapper.BeforeMapProperty += ModelMapperHelper.ApplyDateTimeOffsetSplitTypeToDateTimeOffset /// </remarks> public static void ApplyDateTimeOffsetSplitTypeToDateTimeOffset(IModelInspector inspector, PropertyPath property, IPropertyMapper mapper) { Type propertyType = property.LocalMember.GetPropertyOrFieldType(); if (propertyType == typeof(DateTimeOffset) || propertyType == typeof(DateTimeOffset?)) { mapper.Type(typeof(DateTimeOffsetSplitType), null); string columName = property.ToColumnName(); mapper.Columns(n => n.Name(columName + "DateTime"), n => n.Name(columName + "Offset")); } }
/// <summary> /// Applies the <see cref="DateTimeOffsetSplitType"/> Composite user type to all <see cref="DateTimeOffset"/> fields in the mapping. /// </summary> /// <remarks> /// Allows the use of <see cref="DateTimeOffset"/> type with databases that do not natively support it. /// Example usage: mapper.BeforeMapProperty += ModelMapperHelper.ApplyDateTimeOffsetSplitTypeToDateTimeOffset /// </remarks> public static void ApplyDateTimeOffsetSplitTypeToDateTimeOffset(IModelInspector inspector, PropertyPath property, IPropertyMapper mapper) { Type propertyType = property.LocalMember.GetPropertyOrFieldType(); if (propertyType == typeof(DateTimeOffset) || propertyType == typeof(DateTimeOffset?)) { mapper.Type(typeof(DateTimeOffsetSplitType), null); string columName = property.ToColumnName(); mapper.Columns(n => n.Name(columName + "DateTime"), n => n.Name(columName + "Offset")); } }
/// <summary> /// Event handler to check each persistent class and determine if there is an /// override mapping between object and persistent types. Mappings are defined /// in IHibernateConfigurationExtension implementation. /// </summary> /// <param name="modelInspector"></param> /// <param name="member"></param> /// <param name="propertyCustomizer"></param> private void mapper_BeforeMapProperty(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { foreach (Type objectType in m_ExtensionConfig.UserConversionMappings.Keys) { // if object type name is the same as the current type name override the type conversion if (((PropertyInfo)(member.GetRootMember())).PropertyType.FullName.Equals(objectType.FullName)) { propertyCustomizer.Type(m_ExtensionConfig.UserConversionMappings[objectType], null); } } }
/// <summary> /// Applies the <see cref="OffsetDateTimeType"/> UserType to all <see cref="OffsetDateTime"/> fields in the mapping. /// </summary> /// <remarks> /// Allows the use of <see cref="OffsetDateTime"/> type with databases that do not natively support it. /// User: mapper.BeforeMapProperty += NodaTimeMapperHelper.ApplyOffsetDateTimeType /// </remarks> public static void ApplyOffsetDateTimeType(IModelInspector inspector, PropertyPath property, IPropertyMapper mapper) { var root = property.GetRootMember(); Debug.WriteLine(root.Name); Type propertyType = property.LocalMember.GetPropertyOrFieldType(); if (propertyType == typeof(OffsetDateTime) || propertyType == typeof(OffsetDateTime?)) { mapper.Type <OffsetDateTimeType>(); } }
private static void MapEnumAsString(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { var propertyType = member.LocalMember.GetPropertyOrFieldType(); if (propertyType.IsEnumOrNullableEnum() == false) return; var enumType = propertyType.IsEnum ? propertyType : propertyType.GetGenericArguments().Single(); var type = typeof(EnumStringType<>).MakeGenericType(enumType); propertyCustomizer.Type(type, null); }
public static void BeforeMapProperty( IModelInspector modelInspector, PropertyPath member, IPropertyMapper map) { var prop = member.LocalMember as PropertyInfo; var field = member.LocalMember as FieldInfo; if ( prop?.PropertyType == typeof(TimeSpan) || prop?.PropertyType == typeof(TimeSpan?) || field?.FieldType == typeof(TimeSpan) || field?.FieldType == typeof(TimeSpan?) ) { map.Type <TimeSpanFormattedType>(); map.Length(TimeSpanFormattedType.MaxLength); } }
protected override void OnBeforeMapProperty(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { Type reflectedType = member.LocalMember.ReflectedType; if (reflectedType == null) { return; } propertyCustomizer.Column(GetColumnName(modelInspector, member)); bool required = member.LocalMember .GetCustomAttributes() .OfType <RequiredAttribute>() .Any(); // Getting tableType of reflected object Type memberType = member.MemberType(); bool notNullable = required || (memberType != null && memberType.IsPrimitive) || memberType == typeof(DateTime); propertyCustomizer.NotNullable(notNullable); StringLengthAttribute stringLengthAttribute = member.LocalMember .GetCustomAttributes() .OfType <StringLengthAttribute>() .FirstOrDefault(); if (stringLengthAttribute != null) { if (stringLengthAttribute.MaximumLength > 0) { propertyCustomizer.Length(stringLengthAttribute.MaximumLength); } else { propertyCustomizer.Type(NHibernateUtil.StringClob); } } }
public void Apply(IPropertyMapper propertyMapper) { propertyMapper.Type(NHibernateUtil.DateTime2); }
private void TeamId(IPropertyMapper propertyMapper) { propertyMapper.Column("Team_Id"); propertyMapper.Type(NHibernateUtil.Int32); propertyMapper.NotNullable(false); }
protected override void OnBeforeMapProperty(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer) { Type reflectedType = member.LocalMember.ReflectedType; if (reflectedType == null) { return; } propertyCustomizer.Column(GetColumnName(modelInspector, member)); bool required = member.LocalMember .GetCustomAttributes() .OfType<RequiredAttribute>() .Any(); // Getting tableType of reflected object Type memberType = member.MemberType(); bool notNullable = required || (memberType != null && memberType.IsPrimitive) || memberType == typeof(DateTime); propertyCustomizer.NotNullable(notNullable); StringLengthAttribute stringLengthAttribute = member.LocalMember .GetCustomAttributes() .OfType<StringLengthAttribute>() .FirstOrDefault(); if (stringLengthAttribute != null) { if (stringLengthAttribute.MaximumLength > 0) { propertyCustomizer.Length(stringLengthAttribute.MaximumLength); } else { propertyCustomizer.Type(NHibernateUtil.StringClob); } } }