private static void ReferenceConvention(IModelInspector modelInspector,
                                         PropertyPath propertyPath,
                                         IManyToOneMapper manyToOneMapper)
 {
     manyToOneMapper.Column(cm => cm.Name(string.Concat(propertyPath.LocalMember.Name,
                                                        ConventionNames.PrimaryKeyPostfix)));
 }
 public static void ReferenceConvention(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper map)
 {
     map.Column(k => k.Name(member.LocalMember.GetPropertyOrFieldType().Name + "Id"));
     map.ForeignKey(
         string.Format("fk_{0}_{1}",
                member.LocalMember.Name,
                member.GetContainerEntity(modelInspector).Name));
     map.Cascade(Cascade.All | Cascade.DeleteOrphans);
 }
        public static void AutoMapper_BeforeMapManyToOne(IModelInspector modelInspector, PropertyPath member,
                                                         IManyToOneMapper propertyCustomizer)
        {
            var pi = member.LocalMember as PropertyInfo;

            if (null != pi)
            {
                propertyCustomizer.Column(k => k.Name(pi.PropertyType.Name + "Id"));
                propertyCustomizer.ForeignKey(GenerateForeignKeyName(pi.PropertyType.Name, pi.DeclaringType.Name,
                                                                     pi.ReflectedType.Name));
            }
        }
        private void OnBeforeMapManyToOne(IModelInspector mi, PropertyPath member, IManyToOneMapper propertyCustomizer)
        {
            var pi = member.LocalMember as PropertyInfo;

            if (pi != null && mi.IsRootEntity(pi.PropertyType))
            {
                string name = pi.PropertyType.Name + "ID";

                // CreatedBy == MemberID_CreatedBy
                if (pi.PropertyType.Name != pi.Name)
                {
                    name += "_" + pi.Name;
                }
                propertyCustomizer.Column(k => k.Name(name));
            }
        }
Beispiel #5
0
        public static void EntityName(this IManyToOneMapper mapper, string entityName)
        {
            switch (mapper)
            {
            case KeyManyToOneMapper m:
                m.EntityName(entityName);
                break;

            case ManyToOneMapper m:
                m.EntityName(entityName);
                break;

            default:
                throw new ArgumentException(
                          "Only mappers of type 'KeyManyToOneMapper' and 'ManyToOneMapper' are supported, got " +
                          mapper.GetType().FullName,
                          nameof(mapper));
            }
        }
Beispiel #6
0
 private void ReferenceConvention(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper map)
 {
     if (FkColumnNaming != null)
     {
         foreach (var idProperty in member.LocalMember.GetPropertyOrFieldType().GetProperties().Where(modelInspector.IsPersistentId))
         {
             map.Column(k => k.Name(FkColumnNaming(member.LocalMember, idProperty)));
         }
     }
     if (FkConstraintNaming != null)
     {
         map.ForeignKey(
             FkConstraintNaming(
                 member.LocalMember,
                 member.GetContainerEntity(modelInspector)));
     }
 }
 public static void MapManyToOneWithCascade(IModelInspector modelinspector, PropertyPath member, IManyToOneMapper propertycustomizer)
 {
     propertycustomizer.Cascade(Cascade.Persist);
 }
Beispiel #8
0
 public static void ReferenceConvention(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper map)
 {
     map.Column(member.LocalMember.Name + "Id");
 }
 /// <summary>
 /// Maps many formulas.
 /// </summary>
 /// <param name="mapper">The mapper.</param>
 /// <param name="formulas">The formulas to map.</param>
 /// <remarks>Replaces any previously mapped column or formula.</remarks>
 public static void Formulas(this IManyToOneMapper mapper, params string[] formulas)
 {
     CallFormulas(mapper, formulas);
 }
 public void InvokeCustomizers(PropertyPath member, IManyToOneMapper mapper)
 {
     InvokeCustomizers(manyToOneCustomizers, member, mapper);
 }
 private void DefaultMapManyToOne(IModelInspector inspector, PropertyPath member, IManyToOneMapper customizer)
 {
     customizer.Column(member.LocalMember.Name + _foreignKeyColumnPostfix);
 }
 protected void BeforeMapManyToOne(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper propertyCustomizer)
 {
     propertyCustomizer.Column(this.GetNormalizedDbName(String.Concat(member.LocalMember.GetPropertyOrFieldType().Name, "ID")));
     propertyCustomizer.Cascade(Cascade.Detach);
     propertyCustomizer.Lazy(LazyRelation.NoProxy);
     propertyCustomizer.Fetch(FetchKind.Select);
 }
        protected override void OnBeforeMapManyToOne(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper propertyCustomizer)
        {
            string foreignKeyColumnName = GetKeyColumnName(modelInspector, member);
            propertyCustomizer.Column(foreignKeyColumnName);
            propertyCustomizer.ForeignKey(string.Format("FK_{0}_{1}", member.Owner().Name, foreignKeyColumnName));

            bool required =
                member.LocalMember
                      .GetCustomAttributes()
                      .OfType<RequiredAttribute>()
                      .Any();
            propertyCustomizer.NotNullable(required);
        }
Beispiel #14
0
 public static void ReferenceConvention(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper map)
 {
     map.Column(k => k.Name(member.LocalMember.GetPropertyOrFieldType().Name + "Id"));
     map.ForeignKey(
         string.Format("fk_{0}_{1}",
                       member.LocalMember.Name,
                       member.GetContainerEntity(modelInspector).Name));
     map.Cascade(Cascade.All | Cascade.DeleteOrphans);
 }
 /// <summary>
 /// Maps a mixed list of columns and formulas.
 /// </summary>
 /// <param name="mapper">The mapper.</param>
 /// <param name="columnOrFormulaMapper">The mappers for each column or formula.</param>
 /// <remarks>Replaces any previously mapped column or formula.</remarks>
 public static void ColumnsAndFormulas(
     this IManyToOneMapper mapper,
     params Action <IColumnOrFormulaMapper>[] columnOrFormulaMapper)
 {
     CallColumnsAndFormulas(mapper, columnOrFormulaMapper);
 }
 private static void ReferenceConvention(IModelInspector modelInspector, PropertyPath propertyPath, IManyToOneMapper manyToOneMapper)
 {
     manyToOneMapper.Column(cm => cm.Name(IdentityBuilder.BuildPrimaryKey(propertyPath.LocalMember.Name)));
 }
Beispiel #17
0
 /// <summary>
 ///   Applies any conventions required for many-to-one properties.
 /// </summary>
 /// <param name="mapper"> The mapper. </param>
 /// <param name="property"> The property. </param>
 /// <param name="propertyType"> </param>
 /// <param name="attributes"> </param>
 protected virtual void ApplyManyToOneConventions(IManyToOneMapper mapper, PropertyPath property,
                                                  Type propertyType, IEnumerable <Attribute> attributes)
 {
     mapper.NotNullable(!IsNullable(propertyType, attributes));
 }
Beispiel #18
0
 protected virtual void OnAfterMapManyToOne(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper propertyCustomizer)
 {
 }
 private static void MapperOnBeforeMapManyToOne(IModelInspector insp, PropertyPath prop, IManyToOneMapper map)
 {
     map.Column(prop.LocalMember.Name + "Id");
 }
Beispiel #20
0
        private static void MapManyToOne(IModelInspector modelinspector, PropertyPath member, IManyToOneMapper manyToOne)
        {
            var columnName = member.LocalMember.GetPropertyOrFieldType().Name + "Id";

            manyToOne.Column(columnName);
            string foreignKey = string.Format("FK_{0}__{1}__{2}", member.LocalMember.ReflectedType.Name, member.LocalMember.Name,
                                              columnName);

            manyToOne.ForeignKey(foreignKey);
            manyToOne.Cascade(Cascade.Persist);
            manyToOne.NotNullable(true);
        }
Beispiel #21
0
 private void ApplyManyToOneConvention(IModelInspector mi, PropertyPath type, IManyToOneMapper map)
 {
     map.Column(type.LocalMember.Name + "_id");
 }
 protected virtual void OnBeforeMapManyToOne(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper propertyCustomizer)
 {
 }
        protected override void OnBeforeMapManyToOne(IModelInspector modelInspector, PropertyPath member, IManyToOneMapper propertyCustomizer)
        {
            string foreignKeyColumnName = GetKeyColumnName(modelInspector, member);

            propertyCustomizer.Column(foreignKeyColumnName);
            propertyCustomizer.ForeignKey(string.Format("FK_{0}_{1}", member.Owner().Name, foreignKeyColumnName));

            bool required =
                member.LocalMember
                .GetCustomAttributes()
                .OfType <RequiredAttribute>()
                .Any();

            propertyCustomizer.NotNullable(required);
        }
Beispiel #24
0
 private void NameForeignKeyColumn(IModelInspector modelinspector, PropertyPath member, IManyToOneMapper propertycustomizer)
 {
     propertycustomizer.Column(member.ToColumnName() + "Id");
 }
        /// <summary>
        /// Maps a many to one relationship
        /// </summary>
        /// <param name="modelInspector">The model inspector</param>
        /// <param name="property">The property to map</param>
        /// <param name="mapper">The property mapper</param>
        private void MapManyToOne(IModelInspector modelInspector, PropertyPath property, IManyToOneMapper mapper)
        {
            Type targetEntityType = property.LocalMember.GetPropertyOrFieldType();
            Type sourceEntityType = property.GetContainerEntity(modelInspector);
            MemberInfo member = property.PreviousPath != null ? property.PreviousPath.LocalMember : property.LocalMember;

            var targetEntityIDProperty = modelInspector.GetIdentifierMember(targetEntityType);
            var foreignKeyProperty = property.LocalMember;

            string columnName = null;
            string foreignKeyName = null;

            if (MatchOneToOneComponent(property, modelInspector))
            {
                columnName = namingEngine.ToComponentForeignKeyColumnName(foreignKeyProperty, member, targetEntityIDProperty);
                foreignKeyName = namingEngine.ToForeignKeyName(sourceEntityType, targetEntityType, member, targetEntityIDProperty);
            }
            else
            {
                columnName = namingEngine.ToForeignKeyColumnName(property.LocalMember, targetEntityIDProperty);
                foreignKeyName = namingEngine.ToForeignKeyName(sourceEntityType, targetEntityType, foreignKeyProperty, targetEntityIDProperty);
            }

            mapper.Column(columnName);
            mapper.ForeignKey(foreignKeyName);
        }
Beispiel #26
0
        /// <summary>
        /// Maps a many to one relationship
        /// </summary>
        /// <param name="modelInspector">The model inspector</param>
        /// <param name="property">The property to map</param>
        /// <param name="mapper">The property mapper</param>
        private void MapManyToOne(IModelInspector modelInspector, PropertyPath property, IManyToOneMapper mapper)
        {
            Type       targetEntityType = property.LocalMember.GetPropertyOrFieldType();
            Type       sourceEntityType = property.GetContainerEntity(modelInspector);
            MemberInfo member           = property.PreviousPath != null ? property.PreviousPath.LocalMember : property.LocalMember;

            var targetEntityIDProperty = modelInspector.GetIdentifierMember(targetEntityType);
            var foreignKeyProperty     = property.LocalMember;

            string columnName     = null;
            string foreignKeyName = null;
            var    one            = modelInspector.IsOneToOne(property.LocalMember);


            if (MatchOneToOneComponent(property, modelInspector))
            {
                columnName     = namingEngine.ToComponentForeignKeyColumnName(foreignKeyProperty, member, targetEntityIDProperty);
                foreignKeyName = namingEngine.ToForeignKeyName(sourceEntityType, targetEntityType, member, targetEntityIDProperty);
            }
            else
            {
                columnName     = namingEngine.ToForeignKeyColumnName(property.LocalMember, targetEntityIDProperty);
                foreignKeyName = namingEngine.ToForeignKeyName(sourceEntityType, targetEntityType, foreignKeyProperty, targetEntityIDProperty);
            }

            mapper.Column(columnName);
            mapper.ForeignKey(foreignKeyName);
        }