Esempio n. 1
0
 private void Name(IPropertyMapper propertyMapper)
 {
     propertyMapper.Column("Name");
     propertyMapper.Type(NHibernateUtil.String);
     propertyMapper.Length(100);
     propertyMapper.NotNullable(false);
 }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 5
0
        /// <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>();
            }
        }
Esempio n. 6
0
 /// <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"));
            }
        }
Esempio n. 8
0
 /// <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>();
            }
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
                }
            }
        }
Esempio n. 13
0
 public void Apply(IPropertyMapper propertyMapper)
 {
     propertyMapper.Type(NHibernateUtil.DateTime2);
 }
Esempio n. 14
0
 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);
                }
            }
        }