private static void InstallLinger(DatabaseDialect dialect) { var repository = new DatabaseJobRepository(dialect, () => UnitOfWork.Current); repository.InstallSchema(); Linger.Backend = repository; Linger.StartWorker(); }
public static void InsertBatch(IDbConnection db, DatabaseDialect dialect, Batch batch) { var sql = "INSERT INTO Batch (Name) VALUES (@Name);"; sql = AddInsertIdentity(dialect, sql); batch.Id = db.Execute(sql, batch); batch.CreatedAt = db.Query <DateTime>("SELECT CreatedAt FROM Batch WHERE Id = @Id", new { batch.Id }).Single(); }
public DBBootstrap(IDbConnection connection, DatabaseDialect dialect) : base(connection, dialect) { string fullSql = File.ReadAllText("DbScript.sql").Replace("@DBNAME", this.dbName); foreach (string sql in fullSql.Split(";")) { base.ExecuteNonQuery(sql); } }
public static void InsertJob(IDbConnection db, DatabaseDialect dialect, ScheduledJob job) { var sql = "INSERT INTO ScheduledJob " + "(Priority, Attempts, Handler, RunAt) " + "VALUES (@Priority, @Attempts, @Handler, @RunAt); "; sql = AddInsertIdentity(dialect, sql); job.Id = db.Execute(sql, job); job.CreatedAt = db.Query <DateTime>("SELECT CreatedAt FROM ScheduledJob WHERE Id = @Id", new { job.Id }).Single(); }
public static void InsertJob(IDbConnection db, DatabaseDialect dialect, ScheduledJob job) { var sql = "INSERT INTO ScheduledJob " + "(Priority, Attempts, Handler, RunAt) " + "VALUES (@Priority, @Attempts, @Handler, @RunAt); "; sql = AddInsertIdentity(dialect, sql); job.Id = db.Execute(sql, job); job.CreatedAt = db.Query<DateTime>("SELECT CreatedAt FROM ScheduledJob WHERE Id = @Id", new {job.Id}).Single(); }
private IDbQueryBase BuildDbQueryBase(DatabaseDialect databaseDialect) { return(new DbQueryBase(this.dbConnection, new AbstractionOptions { AutoCloseConnection = false, Dialect = databaseDialect, DialectParameterIdentifier = '@', QueryParameterIdentifier = '@', SortQueryParameters = false, }));; }
public static void SetConnection(DatabaseDialect ddNew, string sNewDatabaseName, string sConnectionString) { ConnectionManager.CloseAll(); m_dd = ddNew; string sOldDatabaseName = GetDatabaseName(sConnectionString); m_sDatabaseName = sNewDatabaseName; m_sConnectionString = sConnectionString.Replace(sOldDatabaseName, sNewDatabaseName); }
public static AbstractionOptions GetDefaultOptions(DatabaseDialect dialect, bool usingConnectionBuilder) { return(new AbstractionOptions { Dialect = dialect, UseLockedCommands = (usingConnectionBuilder == false && (dialect == DatabaseDialect.SqlServer || dialect == DatabaseDialect.MySql)), AutoCloseConnection = (dialect == DatabaseDialect.SqlServer || dialect == DatabaseDialect.Oracle), SortQueryParameters = (dialect == DatabaseDialect.Oracle), QueryParameterIdentifier = '@', DialectParameterIdentifier = (dialect == DatabaseDialect.Oracle) ? ':' : '@', }); }
internal static IPaginationFactory GetObject(DatabaseDialect dialect) { switch (dialect) { case DatabaseDialect.SqlServer: return(new SqlServerPaginationFactory()); case DatabaseDialect.MySql: return(new MySqlPaginationFactory()); case DatabaseDialect.SQLite: return(new SQLitePaginationFactory()); case DatabaseDialect.NotSet: return(new NoPaginationFactory()); } throw new ArgumentException("Invalid Database Dialect"); }
internal static IPaginationFactory GetObject(DatabaseDialect dialect) { switch (dialect) { case DatabaseDialect.SqlServer: return(new SqlServerPaginationFactory()); case DatabaseDialect.MySql: return(new MySqlPaginationFactory()); case DatabaseDialect.SQLite: return(new SQLitePaginationFactory()); default: return(new NoPaginationFactory()); } }
public static void InsertRepeatInfo(IDbConnection db, DatabaseDialect dialect, ScheduledJob job, RepeatInfo info) { const string sql = "INSERT INTO RepeatInfo " + "(ScheduledJobId, PeriodFrequency, PeriodQuantifier, Start, IncludeWeekends) " + "VALUES (@ScheduledJobId, @PeriodFrequency, @PeriodQuantifier, @Start, @IncludeWeekends);"; db.Execute(sql, new { ScheduledJobId = job.Id, info.PeriodFrequency, info.PeriodQuantifier, info.Start, info.IncludeWeekends }); }
public static void UpdateRepeatInfo(IDbConnection db, DatabaseDialect dialect, ScheduledJob job, RepeatInfo info) { const string sql = "UPDATE RepeatInfo SET " + "PeriodFrequency = @PeriodFrequency, " + "PeriodQuantifier = @PeriodQuantifier, " + "Start = @Start, " + "IncludeWeekends = @IncludeWeekends " + "WHERE ScheduledJobId = @ScheduledJobId;"; db.Execute(sql, new { ScheduledJobId = job.Id, info.PeriodFrequency, info.PeriodQuantifier, info.Start, info.IncludeWeekends }); }
private static string AddInsertIdentity(DatabaseDialect dialect, string sql) { switch (dialect) { case DatabaseDialect.SqlServer: sql += "SELECT SCOPE_IDENTITY() AS [Id]"; break; case DatabaseDialect.MySql: sql += "SELECT LAST_INSERT_ID() AS `Id`"; break; case DatabaseDialect.Sqlite: sql += "SELECT LAST_INSERT_ROWID() AS \"Id\""; break; default: throw new NotSupportedException(); } return sql; }
private static string AddInsertIdentity(DatabaseDialect dialect, string sql) { switch (dialect) { case DatabaseDialect.SqlServer: sql += "SELECT SCOPE_IDENTITY() AS [Id]"; break; case DatabaseDialect.MySql: sql += "SELECT LAST_INSERT_ID() AS `Id`"; break; case DatabaseDialect.Sqlite: sql += "SELECT LAST_INSERT_ROWID() AS \"Id\""; break; default: throw new NotSupportedException(); } return(sql); }
public static IEnumerable <ScheduledJob> GetNextAvailable(IDbConnection db, DatabaseDialect dialect, int count) { // - None failed or succeeded, none locked, none in batches, RunAt sorted, Priority sorted string sql; switch (dialect) { case DatabaseDialect.SqlServer: sql = "SELECT TOP " + count + " * FROM [ScheduledJob] j " + "WHERE NOT EXISTS (SELECT 1 FROM BatchJob WHERE ScheduledJobId = j.Id)" + "AND [LockedAt] IS NULL AND [FailedAt] IS NULL AND [SucceededAt] IS NULL " + "AND [RunAt] IS NULL OR GETDATE() >= [RunAt] " + "ORDER BY [Priority], [RunAt] ASC"; return(db.Query <ScheduledJob>(sql).ToList()); case DatabaseDialect.MySql: sql = "SELECT * FROM ScheduledJob j " + "WHERE NOT EXISTS (SELECT 1 FROM BatchJob WHERE ScheduledJobId = j.Id)" + "AND LockedAt IS NULL AND FailedAt IS NULL AND SucceededAt IS NULL " + "AND RunAt IS NULL OR NOW() >= RunAt" + "ORDER BY Priority, RunAt ASC " + "LIMIT @Count"; return(db.Query <ScheduledJob>(sql, new { Count = count }).ToList()); case DatabaseDialect.Sqlite: sql = "SELECT * FROM ScheduledJob j " + "WHERE NOT EXISTS (SELECT 1 FROM BatchJob WHERE ScheduledJobId = j.Id) " + "AND LockedAt IS NULL AND FailedAt IS NULL AND SucceededAt IS NULL " + "AND RunAt IS NULL OR CURRENT_TIMESTAMP >= RunAt " + "ORDER BY Priority, RunAt ASC " + "LIMIT @Count"; return(db.Query <ScheduledJob>(sql, new { Count = count }).ToList()); default: throw new ArgumentOutOfRangeException("dialect"); } }
public static IEnumerable<ScheduledJob> GetNextAvailable(IDbConnection db, DatabaseDialect dialect, int count) { // - None failed or succeeded, none locked, none in batches, RunAt sorted, Priority sorted string sql; switch(dialect) { case DatabaseDialect.SqlServer: sql = "SELECT TOP " + count + " * FROM [ScheduledJob] j " + "WHERE NOT EXISTS (SELECT 1 FROM BatchJob WHERE ScheduledJobId = j.Id)" + "AND [LockedAt] IS NULL AND [FailedAt] IS NULL AND [SucceededAt] IS NULL " + "AND [RunAt] IS NULL OR GETDATE() >= [RunAt] " + "ORDER BY [Priority], [RunAt] ASC"; return db.Query<ScheduledJob>(sql).ToList(); case DatabaseDialect.MySql: sql = "SELECT * FROM ScheduledJob j " + "WHERE NOT EXISTS (SELECT 1 FROM BatchJob WHERE ScheduledJobId = j.Id)" + "AND LockedAt IS NULL AND FailedAt IS NULL AND SucceededAt IS NULL " + "AND RunAt IS NULL OR NOW() >= RunAt" + "ORDER BY Priority, RunAt ASC " + "LIMIT @Count"; return db.Query<ScheduledJob>(sql, new { Count = count }).ToList(); case DatabaseDialect.Sqlite: sql = "SELECT * FROM ScheduledJob j " + "WHERE NOT EXISTS (SELECT 1 FROM BatchJob WHERE ScheduledJobId = j.Id) " + "AND LockedAt IS NULL AND FailedAt IS NULL AND SucceededAt IS NULL " + "AND RunAt IS NULL OR CURRENT_TIMESTAMP >= RunAt " + "ORDER BY Priority, RunAt ASC " + "LIMIT @Count"; return db.Query<ScheduledJob>(sql, new { Count = count }).ToList(); default: throw new ArgumentOutOfRangeException("dialect"); } }
public Database(DatabaseDialect dialect, string connectionString) { this._dialect = dialect; this._ConnectionString = connectionString; }
public DbQueryBase(ConnectionBuilder connectionBuilder, DatabaseDialect dialect) : this(connectionBuilder, DefaultDialectOptions.GetDefaultOptions(dialect, true)) { }
public static void Install(DatabaseDialect dialect, IDbConnection db) { string sql; switch (dialect) { case DatabaseDialect.SqlServer: sql = "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'ScheduledJob')\n" + "CREATE TABLE [dbo].[ScheduledJob]\n" + "(\n" + " [Id] INT NOT NULL IDENTITY(1,1), \n" + " [Name] NVARCHAR(255), \n" + " [Priority] INT NOT NULL CONSTRAINT [DF_ScheduledJob_Priority] DEFAULT 0, \n" + " [Attempts] INT NOT NULL CONSTRAINT [DF_ScheduledJob_Attempts] DEFAULT 0, \n" + " [Handler] VARBINARY(8000) NOT NULL, \n" + " [LastError] NVARCHAR(255), \n" + " [RunAt] DATETIME, \n" + " [FailedAt] DATETIME, \n" + " [SucceededAt] DATETIME, \n" + " [LockedAt] DATETIME, \n" + " [LockedBy] NVARCHAR(255), \n" + " [CreatedAt] DATETIME NOT NULL CONSTRAINT [DF_ScheduledJob_CreatedAt] DEFAULT GETDATE(), \n" + " [UpdatedAt] DATETIME, \n" + " CONSTRAINT [PK_ScheduledJob] PRIMARY KEY ([Id])\n" + ");\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'Batch' )\n" + "CREATE TABLE [dbo].[Batch]\n" + "(\n" + " [Id] INT NOT NULL IDENTITY(1,1), \n" + " [Name] NVARCHAR(255) NOT NULL, \n" + " [StartedAt] DATETIME, \n" + " [CreatedAt] DATETIME NOT NULL CONSTRAINT [DF_Batch_CreatedAt] DEFAULT GETDATE(), \n" + " CONSTRAINT [PK_Batch] PRIMARY KEY ([Id])\n" + ");\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'BatchJob')\n" + "CREATE TABLE [dbo].[BatchJob]\n" + "(\n" + " [Id] INT NOT NULL IDENTITY(1,1), \n" + " [BatchId] INT NOT NULL, \n" + " [ScheduledJobId] INT NOT NULL, \n" + " CONSTRAINT [PK_BatchJob] PRIMARY KEY ([Id])\n" + ");\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.objects WHERE [name] = 'FK_BatchJob_BatchId_Batch_Id')\n" + "ALTER TABLE [dbo].[BatchJob] ADD CONSTRAINT [FK_BatchJob_BatchId_Batch_Id] FOREIGN KEY ([BatchId]) REFERENCES [dbo].[Batch] ([Id]);\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.objects WHERE [name] = 'FK_BatchJob_ScheduledJobId_ScheduledJob_Id')\n" + "ALTER TABLE [dbo].[BatchJob] ADD CONSTRAINT [FK_BatchJob_ScheduledJobId_ScheduledJob_Id] FOREIGN KEY ([ScheduledJobId]) REFERENCES [dbo].[ScheduledJob] ([Id]);\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'RepeatInfo')\n" + "CREATE TABLE [dbo].[RepeatInfo] \n" + "(\n" + " [ScheduledJobId] INT NOT NULL IDENTITY(1,1), \n" + " [PeriodFrequency] INT NOT NULL, \n" + " [PeriodQuantifier] INT NOT NULL, \n" + " [Start] DATETIME NOT NULL, \n" + " [IncludeWeekends] BIT NOT NULL CONSTRAINT [DF_RepeatInfo_IncludeWeekends] DEFAULT 0\n" + ");\n"; sql += "IF NOT EXISTS ( SELECT [name] FROM sys.objects WHERE [name] = 'FK_RepeatInfo_ScheduledJobId_ScheduledJob_Id')\n" + "ALTER TABLE [dbo].[RepeatInfo] ADD CONSTRAINT [FK_RepeatInfo_ScheduledJobId_ScheduledJob_Id] FOREIGN KEY ([ScheduledJobId]) REFERENCES [dbo].[ScheduledJob] ([Id]);\n"; break; case DatabaseDialect.MySql: throw new NotImplementedException(); case DatabaseDialect.Sqlite: sql = "CREATE TABLE IF NOT EXISTS 'ScheduledJob' " + "(" + " 'Id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + " 'Name' TEXT, " + " 'Priority' INTEGER NOT NULL DEFAULT 0, " + " 'Attempts' INTEGER NOT NULL DEFAULT 0, " + " 'Handler' BLOB NOT NULL, " + " 'LastError' TEXT, " + " 'RunAt' DATETIME, " + " 'FailedAt' DATETIME, " + " 'SucceededAt' DATETIME, " + " 'LockedAt' DATETIME, " + " 'LockedBy' TEXT, " + " 'CreatedAt' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, " + " 'UpdatedAt' DATETIME " + ");"; sql += "CREATE TABLE IF NOT EXISTS 'Batch' (" + " 'Id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + " 'Name' TEXT NOT NULL, " + " 'StartedAt' DATETIME," + " 'CreatedAt' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP " + ");"; sql += "CREATE TABLE IF NOT EXISTS 'BatchJob' " + "(" + " 'Id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + " 'BatchId' INTEGER NOT NULL, " + " 'ScheduledJobId' INTEGER NOT NULL" + ");"; sql += "CREATE TABLE IF NOT EXISTS 'RepeatInfo' " + "(" + " 'ScheduledJobId' INTEGER NOT NULL, " + " 'PeriodFrequency' INTEGER NOT NULL, " + " 'PeriodQuantifier' INTEGER NOT NULL, " + " 'Start' DATETIME NOT NULL, " + " 'IncludeWeekends' INTEGER NOT NULL DEFAULT 0" + ")"; break; default: throw new NotSupportedException(); } db.Execute(sql); }
public static void InsertBatch(IDbConnection db, DatabaseDialect dialect, Batch batch) { var sql = "INSERT INTO Batch (Name) VALUES (@Name);"; sql = AddInsertIdentity(dialect, sql); batch.Id = db.Execute(sql, batch); batch.CreatedAt = db.Query<DateTime>("SELECT CreatedAt FROM Batch WHERE Id = @Id", new { batch.Id }).Single(); }
public static void AddToBatch(IDbConnection db, DatabaseDialect dialect, Batch batch, ScheduledJob job) { const string sql = "INSERT INTO BatchJob (BatchId, ScheduledJobId) VALUES (@BatchId, @ScheduledJobId)"; db.Execute(sql, new { BatchId = batch.Id, ScheduledJobId = job.Id }); }
public DatabaseJobRepository(DatabaseDialect dialect, Func <IDbConnection> connectionBuilder) { _dialect = dialect; _connectionBuilder = connectionBuilder; }
public DbQueryBase(IDbConnection connection, DatabaseDialect dialect) : this(new ConnectionBuilder(connection), DefaultDialectOptions.GetDefaultOptions(dialect, false)) { }
public CreateDatabaseForTests(DbProviderFactory dbFactory, string connectionString, DatabaseDialect databaseDialect) { this.dbConnection = new ConnectionBuilder(dbFactory, connectionString).BuildConnection(); this.dbQueryBase = this.BuildDbQueryBase(databaseDialect); }
public DbQueryBase(IDbConnection connection, DatabaseDialect dialect) { this.dbConnection = connection; this.Dialect = dialect; this.paginationFactory = PaginationAbstractFactory.GetObject(dialect); }
public static void Install(DatabaseDialect dialect, IDbConnection db) { string sql; switch(dialect) { case DatabaseDialect.SqlServer: sql = "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'ScheduledJob')\n" + "CREATE TABLE [dbo].[ScheduledJob]\n" + "(\n" + " [Id] INT NOT NULL IDENTITY(1,1), \n" + " [Name] NVARCHAR(255), \n" + " [Priority] INT NOT NULL CONSTRAINT [DF_ScheduledJob_Priority] DEFAULT 0, \n" + " [Attempts] INT NOT NULL CONSTRAINT [DF_ScheduledJob_Attempts] DEFAULT 0, \n" + " [Handler] VARBINARY(8000) NOT NULL, \n" + " [LastError] NVARCHAR(255), \n" + " [RunAt] DATETIME, \n" + " [FailedAt] DATETIME, \n" + " [SucceededAt] DATETIME, \n" + " [LockedAt] DATETIME, \n" + " [LockedBy] NVARCHAR(255), \n" + " [CreatedAt] DATETIME NOT NULL CONSTRAINT [DF_ScheduledJob_CreatedAt] DEFAULT GETDATE(), \n" + " [UpdatedAt] DATETIME, \n" + " CONSTRAINT [PK_ScheduledJob] PRIMARY KEY ([Id])\n" + ");\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'Batch' )\n" + "CREATE TABLE [dbo].[Batch]\n" + "(\n" + " [Id] INT NOT NULL IDENTITY(1,1), \n" + " [Name] NVARCHAR(255) NOT NULL, \n" + " [StartedAt] DATETIME, \n" + " [CreatedAt] DATETIME NOT NULL CONSTRAINT [DF_Batch_CreatedAt] DEFAULT GETDATE(), \n" + " CONSTRAINT [PK_Batch] PRIMARY KEY ([Id])\n" + ");\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'BatchJob')\n" + "CREATE TABLE [dbo].[BatchJob]\n" + "(\n" + " [Id] INT NOT NULL IDENTITY(1,1), \n" + " [BatchId] INT NOT NULL, \n" + " [ScheduledJobId] INT NOT NULL, \n" + " CONSTRAINT [PK_BatchJob] PRIMARY KEY ([Id])\n" + ");\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.objects WHERE [name] = 'FK_BatchJob_BatchId_Batch_Id')\n" + "ALTER TABLE [dbo].[BatchJob] ADD CONSTRAINT [FK_BatchJob_BatchId_Batch_Id] FOREIGN KEY ([BatchId]) REFERENCES [dbo].[Batch] ([Id]);\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.objects WHERE [name] = 'FK_BatchJob_ScheduledJobId_ScheduledJob_Id')\n" + "ALTER TABLE [dbo].[BatchJob] ADD CONSTRAINT [FK_BatchJob_ScheduledJobId_ScheduledJob_Id] FOREIGN KEY ([ScheduledJobId]) REFERENCES [dbo].[ScheduledJob] ([Id]);\n"; sql += "IF NOT EXISTS (SELECT [name] FROM sys.tables WHERE [name] = 'RepeatInfo')\n" + "CREATE TABLE [dbo].[RepeatInfo] \n" + "(\n" + " [ScheduledJobId] INT NOT NULL IDENTITY(1,1), \n" + " [PeriodFrequency] INT NOT NULL, \n" + " [PeriodQuantifier] INT NOT NULL, \n" + " [Start] DATETIME NOT NULL, \n" + " [IncludeWeekends] BIT NOT NULL CONSTRAINT [DF_RepeatInfo_IncludeWeekends] DEFAULT 0\n" + ");\n"; sql += "IF NOT EXISTS ( SELECT [name] FROM sys.objects WHERE [name] = 'FK_RepeatInfo_ScheduledJobId_ScheduledJob_Id')\n" + "ALTER TABLE [dbo].[RepeatInfo] ADD CONSTRAINT [FK_RepeatInfo_ScheduledJobId_ScheduledJob_Id] FOREIGN KEY ([ScheduledJobId]) REFERENCES [dbo].[ScheduledJob] ([Id]);\n"; break; case DatabaseDialect.MySql: throw new NotImplementedException(); case DatabaseDialect.Sqlite: sql = "CREATE TABLE IF NOT EXISTS 'ScheduledJob' " + "(" + " 'Id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + " 'Name' TEXT, " + " 'Priority' INTEGER NOT NULL DEFAULT 0, " + " 'Attempts' INTEGER NOT NULL DEFAULT 0, " + " 'Handler' BLOB NOT NULL, " + " 'LastError' TEXT, " + " 'RunAt' DATETIME, " + " 'FailedAt' DATETIME, " + " 'SucceededAt' DATETIME, " + " 'LockedAt' DATETIME, " + " 'LockedBy' TEXT, " + " 'CreatedAt' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, " + " 'UpdatedAt' DATETIME " + ");"; sql += "CREATE TABLE IF NOT EXISTS 'Batch' (" + " 'Id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + " 'Name' TEXT NOT NULL, " + " 'StartedAt' DATETIME," + " 'CreatedAt' DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP " + ");"; sql += "CREATE TABLE IF NOT EXISTS 'BatchJob' " + "(" + " 'Id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " + " 'BatchId' INTEGER NOT NULL, " + " 'ScheduledJobId' INTEGER NOT NULL" + ");"; sql += "CREATE TABLE IF NOT EXISTS 'RepeatInfo' " + "(" + " 'ScheduledJobId' INTEGER NOT NULL, " + " 'PeriodFrequency' INTEGER NOT NULL, " + " 'PeriodQuantifier' INTEGER NOT NULL, " + " 'Start' DATETIME NOT NULL, " + " 'IncludeWeekends' INTEGER NOT NULL DEFAULT 0" + ")"; break; default: throw new NotSupportedException(); } db.Execute(sql); }
public ConstantDialectDetector(DatabaseDialect dialect) { this.dialect = dialect ?? new DatabaseDialect(); }
public DatabaseJobRepository(DatabaseDialect dialect, Func<IDbConnection> connectionBuilder) { _dialect = dialect; _connectionBuilder = connectionBuilder; }
/// <summary> /// Initializes a new instance of the <see cref="DynamicDatabase"/> class. /// </summary> /// <param name="dialect">The dialect.</param> /// <param name="connectionString">Database connection string</param> /// <param name="providerName">Invariant name of the database provider</param> public DynamicDatabase(DatabaseDialect dialect, string connectionString, string providerName) : this(connectionString, providerName, new[] { new ConstantDialectDetector(dialect) }) { }