示例#1
0
        /// <summary> Build a SQLExceptionConverter instance. </summary>
        /// <param name="dialect">The defined dialect. </param>
        /// <param name="properties">The configuration properties. </param>
        /// <returns> An appropriate <see cref="ISQLExceptionConverter"/> instance. </returns>
        /// <remarks>
        /// First, looks for a <see cref="Cfg.Environment.SqlExceptionConverter"/> property to see
        /// if the configuration specified the class of a specific converter to use.  If this
        /// property is set, attempt to construct an instance of that class.  If not set, or
        /// if construction fails, the converter specific to the dialect will be used.
        /// </remarks>
        public static ISQLExceptionConverter BuildSQLExceptionConverter(Dialect.Dialect dialect, IDictionary <string, string> properties)
        {
            ISQLExceptionConverter converter = null;

            string converterClassName;

            properties.TryGetValue(Cfg.Environment.SqlExceptionConverter, out converterClassName);
            if (!string.IsNullOrEmpty(converterClassName))
            {
                converter = ConstructConverter(converterClassName, dialect.ViolatedConstraintNameExtracter);
            }

            if (converter == null)
            {
                log.Info("Using dialect defined converter");
                converter = dialect.BuildSQLExceptionConverter();
            }

            IConfigurable confConv = converter as IConfigurable;

            if (confConv != null)
            {
                try
                {
                    confConv.Configure(properties);
                }
                catch (HibernateException e)
                {
                    log.Warn("Unable to configure SQLExceptionConverter", e);
                    throw;
                }
            }

            return(converter);
        }
示例#2
0
 public DatabaseMetadata(DbConnection connection, Dialect.Dialect dialect, bool extras)
 {
     meta         = dialect.GetDataBaseSchema(connection);
     this.dialect = dialect;
     this.extras  = extras;
     InitSequences(connection, dialect);
     sqlExceptionConverter = dialect.BuildSQLExceptionConverter();
 }
		public DatabaseMetadata(DbConnection connection, Dialect.Dialect dialect, bool extras)
		{
			meta = dialect.GetDataBaseSchema(connection);
		    this.dialect = dialect;
		    this.extras = extras;
			InitSequences(connection, dialect);
			sqlExceptionConverter = dialect.BuildSQLExceptionConverter();
		}