private static SqlParserConfig CreateConfig(DbConnectionKind dbConnectionKind, Func <IDbDataParameter> dbParameterCreator) { var config = new SqlParserConfig { DbConnectionKind = dbConnectionKind, DataParameterCreator = dbParameterCreator }; switch (dbConnectionKind) { case DbConnectionKind.AS400: case DbConnectionKind.DB2: config.Dialect = new Db2Dialect(); break; case DbConnectionKind.MySql: config.Dialect = new MysqlDialect(); break; case DbConnectionKind.OracleLegacy: config.Dialect = new Oracle11Dialect(); break; case DbConnectionKind.Oracle: config.Dialect = new OracleDialect(); break; case DbConnectionKind.PostgreSql: config.Dialect = new PostgresDialect(); break; case DbConnectionKind.SQLite: config.Dialect = new SqliteDialect(); break; case DbConnectionKind.SqlServerLegacy: config.Dialect = new Mssql2008Dialect(); break; case DbConnectionKind.SqlServer: config.Dialect = new MssqlDialect(); break; case DbConnectionKind.Odbc: case DbConnectionKind.OleDb: config.Dialect = new StandardDialect(); config.Dialect.UseOdbcDateFormat = true; break; default: config.Dialect = new StandardDialect(); break; } return(config); }
/// <summary> /// Add "default" sql parser configuration /// </summary> /// <param name="dbConnectionKind">A kind of DB connection</param> /// <param name="dbParameterCreator">Delegate for create <see cref="IDbDataParameter"/> instance.</param> public static void AddDefault(DbConnectionKind dbConnectionKind, Func <IDbDataParameter> dbParameterCreator) { ValidateParameter(dbConnectionKind, dbParameterCreator); if (DefaultConfig == null) { DefaultConfig = CreateConfig(dbConnectionKind, dbParameterCreator); } }
private static void ValidateParameter(DbConnectionKind dbConnectionKind, Func <IDbDataParameter> dbParameterCreator) { if (dbConnectionKind == DbConnectionKind.Unknown) { throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD002); } if (dbParameterCreator == null) { throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD003); } }
/// <summary> /// Add "additional" sql parser configuration /// </summary> /// <param name="dbConnectionKind">A kind of DB connection</param> /// <param name="dbParameterCreator">Delegate for create <see cref="IDbDataParameter"/> instance.</param> /// <param name="configName">A name of configuration</param> public static void AddAdditional(DbConnectionKind dbConnectionKind, Func <IDbDataParameter> dbParameterCreator, string configName) { ValidateParameter(dbConnectionKind, dbParameterCreator); if (string.IsNullOrEmpty(configName)) { throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD004); } if (!AdditionalConfigs.ContainsKey(configName)) { AdditionalConfigs.Add(configName, CreateConfig(dbConnectionKind, dbParameterCreator)); } }
// for unit test internal static SqlParserConfig CreateConfigForTest(DbConnectionKind dbConnectionKind, string configName) { return(CreateConfig(dbConnectionKind, null)); }