/// <summary> /// Sets the database dialect /// </summary> /// <param name="dialect"></param> public static void SetDialect(Dialect dialect) { TableNames.Clear(); ColumnNames.Clear(); StringBuilderCacheDict.Clear(); switch (dialect) { case Dialect.PostgreSQL: _dialect = Dialect.PostgreSQL; _encapsulation = "\"{0}\""; _getIdentitySql = string.Format("SELECT LASTVAL() AS id"); _getPagedListSql = "Select {SelectColumns} from {TableName} {WhereClause} Order By {OrderBy} LIMIT {RowsPerPage} OFFSET (({PageNumber}-1) * {RowsPerPage})"; break; case Dialect.SQLite: _dialect = Dialect.SQLite; _encapsulation = "\"{0}\""; _getIdentitySql = string.Format("SELECT LAST_INSERT_ROWID() AS id"); _getPagedListSql = "Select {SelectColumns} from {TableName} {WhereClause} Order By {OrderBy} LIMIT {RowsPerPage} OFFSET (({PageNumber}-1) * {RowsPerPage})"; break; case Dialect.MySQL: _dialect = Dialect.MySQL; _encapsulation = "`{0}`"; _getIdentitySql = string.Format("SELECT LAST_INSERT_ID() AS id"); _getPagedListSql = "Select {SelectColumns} from {TableName} {WhereClause} Order By {OrderBy} LIMIT {Offset},{RowsPerPage}"; break; default: _dialect = Dialect.SQLServer; _encapsulation = "[{0}]"; _getIdentitySql = string.Format("SELECT CAST(SCOPE_IDENTITY() AS BIGINT) AS [id]"); _getPagedListSql = "SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY {OrderBy}) AS PagedNumber, {SelectColumns} FROM {TableName} {WhereClause}) AS u WHERE PagedNumber BETWEEN (({PageNumber}-1) * {RowsPerPage} + 1) AND ({PageNumber} * {RowsPerPage})"; break; } }