Exemplo n.º 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;
		}
Exemplo n.º 2
0
		public DatabaseMetadata(DbConnection connection, Dialect.Dialect dialect, bool extras)
		{
			schemaReader = new InformationSchemaReader(connection);
			this.extras = extras;
			InitSequences(connection, dialect);
			sqlExceptionConverter = dialect.BuildSQLExceptionConverter();
		}