/// <summary> /// Generates the name of a foreign key column according the relationship property and the Id property /// </summary> /// <param name="relationshipProperty">The relationship property</param> /// <param name="idProperty">The target entity Id property</param> /// <returns>The generated column name</returns> public string ToForeignKeyColumnName(MemberInfo relationshipProperty, MemberInfo idProperty) { string result = null; switch (namingConventions.ForeignKeyColumnNamingConvention) { case ForeignKeyColumnNamingConvention.Default: result = ToColumnName(relationshipProperty); break; case ForeignKeyColumnNamingConvention.PropertyNameIdPropertyName: result = ToColumnName(string.Concat(relationshipProperty.Name, idProperty.Name)); break; case ForeignKeyColumnNamingConvention.PropertyName_IdPropertyName: result = string.Format(ConventionFormats.RelationshipUnderscoreSeparated, ToColumnName(relationshipProperty), ToColumnName(idProperty)); break; case ForeignKeyColumnNamingConvention.Custom: { if (namingConventions.ForeignKeyColumnCustomNamingConvention == null) { throw new ConfigurationErrorsException(string.Format(ExceptionMessages.CustomConventionNotFound, typeof(ForeignKeyColumnNamingConvention).Name)); } result = namingConventions.ForeignKeyColumnCustomNamingConvention(relationshipProperty, idProperty); }; break; } return(result); }