/// <summary>
            /// Compara com outro nome.
            /// </summary>
            /// <param name="other"></param>
            /// <returns></returns>
            public int CompareTo(Colosoft.Query.ITranslatedName other)
            {
                var name = other as TranslatedPropertyName;

                if (name != null)
                {
                    return(string.Compare(this.Name, name.Name));
                }
                return(-1);
            }
        /// <summary>
        /// Recupera o nome da coluna associado com as informações da entidade.
        /// </summary>
        /// <param name="entity">Entidade</param>
        /// <param name="propertyName">Nome da propriedade</param>
        /// <returns>Retorna o nome da entidade</returns>
        public virtual Colosoft.Query.ITranslatedName GetName(Colosoft.Query.EntityInfo entity, string propertyName)
        {
            Exception error = null;

            Colosoft.Query.ITranslatedName result = null;
            if (!TryGetName(entity, propertyName, out result, out error))
            {
                throw error;
            }
            return(result);
        }
        /// <summary>
        /// Recupera o nome da coluna associado com as informações da entidade.
        /// </summary>
        /// <param name="entity">Entidade</param>
        /// <param name="propertyName">Nome da propriedade</param>
        /// <param name="translatedName">Nome traduzido que foi encontrado.</param>
        /// <param name="error">Erro ocorrido.</param>
        /// <returns>Retorna o nome da entidade</returns>
        private bool TryGetName(Colosoft.Query.EntityInfo entity, string propertyName, out Colosoft.Query.ITranslatedName translatedName, out Exception error)
        {
            entity.Require("entity").NotNull();
            entity.Require("columnName").NotNull();
            Colosoft.Data.Schema.IPropertyMetadata propertyMetadata = null;
            Colosoft.Data.Schema.ITypeMetadata     typeMetadata     = null;
            try
            {
                typeMetadata     = GetTypeMetadata(entity.FullName);
                propertyMetadata = typeMetadata[propertyName];
            }
            catch
            {
            }
            string name;

            if (propertyMetadata == null)
            {
                if (StringComparer.InvariantCultureIgnoreCase.Equals(propertyName, "TableId"))
                {
                    var identityMetadatas = typeMetadata.GetKeyProperties();
                    using (var identityEnumerator = identityMetadatas.GetEnumerator())
                    {
                        identityEnumerator.MoveNext();
                        var identityMetadata = identityEnumerator.Current;
                        if (identityEnumerator.MoveNext())
                        {
                            translatedName = null;
                            error          = new NotSupportedException(ResourceMessageFormatter.Create(() => Properties.Resources.NotSupportedException_TableIdOnlySupportedInNonCompositePrimaryKeyTable, typeMetadata.FullName).Format());
                            return(false);
                        }
                        else
                        {
                            name = identityMetadata.Name;
                        }
                    }
                }
                else
                {
                    name = propertyName;
                }
            }
            else
            {
                name = propertyMetadata.Name;
            }
            translatedName = new TranslatedPropertyName(name, entity.Alias, null);
            error          = null;
            return(true);
        }
 /// <summary>
 /// Recupera o nome da coluna associado com as informações da entidade.
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="propertyName"></param>
 /// <param name="ignoreTypeSchema"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public virtual bool TryGetName(Colosoft.Query.EntityInfo entity, string propertyName, bool ignoreTypeSchema, out Colosoft.Query.ITranslatedName name)
 {
     return(TryGetName(entity, propertyName, out name));
 }
        /// <summary>
        /// Recupera o nome da coluna associado com as informações da entidade.
        /// </summary>
        /// <param name="entity">Entidade</param>
        /// <param name="propertyName">Nome da propriedade</param>
        /// <returns>Retorna o nome da entidade</returns>
        public virtual bool TryGetName(Colosoft.Query.EntityInfo entity, string propertyName, out Colosoft.Query.ITranslatedName name)
        {
            Exception error = null;

            return(TryGetName(entity, propertyName, out name, out error));
        }