/// <summary>
 /// Garante que o <see cref="mdCache"/> estará criado.
 /// </summary>
 /// <param name="t">
 /// O tipo, para criação do
 /// <see cref="NHibernateDbConnectionFactory"/>.
 /// </param>
 private static void EnsureMetadataCache(Type t)
 {
     if (mdCache == null)
     {
         lock (staticSync)
         {
             NHibernateDbConnectionFactory factory =
                 new NHibernateDbConnectionFactory(ActiveRecordMediator.GetSessionFactoryHolder().GetSessionFactory(t));
             mdCache = new DbMetadataCache(factory);
         }
     }
 }
Пример #2
0
        /// <summary>
        /// Atribui a propriedade MaxLength de todos os <see cref="TextBox"/>es filhos de um controle.
        /// </summary>
        /// <param name="parent">O controle a partir de onde serão atribuidas as propriedades <c>MaxLength</c>.</param>
        /// <param name="connector">O <see cref="IConnector"/></param>
        /// <param name="mdCache">O objeto <see cref="DbMetadataCache"/> utilizado para buscar as informações sobre as tabelas</param>
        /// <param name="defaultTableName">O nome da tabela</param>
        public static void SetMaxLengthOnTextBoxes(Control parent, IConnector connector, DbMetadataCache mdCache, string defaultTableName)
        {
            var   rx = new Regex(@"(?<t>[^.]+)\.(?<f>[^.]+)", RegexOptions.ExplicitCapture | RegexOptions.Compiled);
            Match m;

            if (connector != null)
            {
                defaultTableName = connector.GetPhysicalTableName(defaultTableName);
            }

            foreach (TextBox txt in SelectControls(parent, new TypeCondition(typeof(TextBox))))
            {
                if (txt.Enabled && !txt.ReadOnly && txt.ID != null && txt.ID.Length > 3)
                {
                    var dbRelated = txt as IDatabaseFieldRelated;
                    if (dbRelated != null && dbRelated.DatabaseField != null && (m = rx.Match(dbRelated.DatabaseField)).Success)
                    {
                        string table = m.Groups["t"].Value;
                        string field = m.Groups["f"].Value;
                        if (connector != null)
                        {
                            table = connector.GetPhysicalTableName(table);
                        }
                        txt.MaxLength = mdCache.MaxLength(table, field);
                        continue;
                    }
                    txt.MaxLength = mdCache.MaxLength(defaultTableName, txt.ID.Substring(3));
                }
            }
        }
Пример #3
0
 /// <summary>
 /// Atribui a propriedade MaxLength de todos os <see cref="TextBox"/>es da página.
 /// </summary>
 /// <param name="mdCache">O objeto <see cref="DbMetadataCache"/> utilizado para buscar as informações sobre as tabelas</param>
 /// <param name="tableName">O nome da tabela</param>
 public static void SetMaxLengthOnTextBoxes(DbMetadataCache mdCache, string tableName)
 {
     SetMaxLengthOnTextBoxes(Page, mdCache, tableName);
 }
Пример #4
0
 /// <summary>
 /// Atribui a propriedade MaxLength de todos os <see cref="TextBox"/>es filhos de um controle.
 /// </summary>
 /// <param name="parent">O controle a partir de onde serão atribuidas as propriedades <c>MaxLength</c>.</param>
 /// <param name="mdCache">O objeto <see cref="DbMetadataCache"/> utilizado para buscar as informações sobre as tabelas</param>
 /// <param name="tableName">O nome da tabela</param>
 public static void SetMaxLengthOnTextBoxes(Control parent, DbMetadataCache mdCache, string tableName)
 {
     SetMaxLengthOnTextBoxes(parent, null, mdCache, tableName);
 }