コード例 #1
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"));
     }
 }
コード例 #2
0
ファイル: Idbag.cs プロジェクト: solyutor/enhima
 private void IdBagTableName(IModelInspector modelInspector, PropertyPath member, IIdBagPropertiesMapper propertyCustomizer)
 {
     if (member.LocalMember.IsComponentCollection(Mapper.ModelInspector))
     {
         propertyCustomizer.Table(member.GetRootMember().DeclaringType.Name + member.ToColumnName());
     }
     else
     {
         propertyCustomizer.Table(BidirectionAssociation.AnalizeManyToMany(member.LocalMember).ManyToManyTablename);
     }
 }
コード例 #3
0
ファイル: Idbag.cs プロジェクト: solyutor/enhima
        private void IdBagHiloGenerator(IModelInspector modelInspector, PropertyPath member, IIdBagPropertiesMapper propertyCustomizer)
        {
            var hiloRowName = member.LocalMember.IsComponentCollection(Mapper.ModelInspector)
                                  ? member.GetRootMember().DeclaringType.Name + member.ToColumnName()
                                  : BidirectionAssociation.AnalizeManyToMany(member.LocalMember).ManyToManyTablename;

            propertyCustomizer.Id(idMap =>
            {
                idMap.Generator(new EntityHighLowGeneratorDef(hiloRowName));

                idMap.Column("Id");
                idMap.Type((IIdentifierType)NHibernateUtil.Int64);
            });

            Mapper.AddHiLoScript(EntityHighLowGenerator.GetInsertFor(hiloRowName));
        }
コード例 #4
0
ファイル: Property.cs プロジェクト: solyutor/enhima
        private static void PrefixColumnWithComponentPropertyName(IModelInspector modelInspector, PropertyPath member, IPropertyMapper propertyCustomizer)
        {
            if (member.PreviousPath == null) return;

            propertyCustomizer.Column(member.ToColumnName());
        }
コード例 #5
0
ファイル: ManyToOne.cs プロジェクト: solyutor/enhima
 private void NameForeignKeyColumn(IModelInspector modelinspector, PropertyPath member, IManyToOneMapper propertycustomizer)
 {
     propertycustomizer.Column(member.ToColumnName() + "Id");
 }
 protected override void OnBeforeMapOneToOne(IModelInspector modelInspector, PropertyPath member, IOneToOneMapper propertyCustomizer)
 {
     propertyCustomizer.ForeignKey(string.Format("FK_{0}_{1}", member.Owner().Name, member.ToColumnName()));
 }
        protected virtual string GetColumnName(IModelInspector modelInspector, PropertyPath member)
        {
            string defaultColumnName = member.ToColumnName();
            string columnPrefix = null;
            string columnName = null;

            Type currentType = member.LocalMember.ReflectedType;
            bool walkToParent = modelInspector.IsTablePerClassHierarchy(currentType);
            while (currentType != null && currentType != typeof(object))
            {
                ModelMetaData modelMetaData;
                if (ModelMetaDatasByType.TryGetValue(currentType, out modelMetaData))
                {
                    columnPrefix = modelMetaData.ColumnPrefix;
                    modelMetaData.ColumnNames.TryGetValue(defaultColumnName, out columnName);
                    break;
                }

                currentType = walkToParent ? currentType.BaseType : null;
            }

            string result = string.Concat(columnPrefix, columnName ?? GetIdentifier(defaultColumnName));
            return result;
        }
コード例 #8
0
ファイル: Map.cs プロジェクト: solyutor/enhima
 private void MapTableName(IModelInspector modelInspector, PropertyPath member, IMapPropertiesMapper propertyCustomizer)
 {
     var ownerName = member.GetRootMember().ReflectedType.Name;
     var propertyName = member.ToColumnName();
     propertyCustomizer.Table(ownerName + propertyName);
 }