|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Data.Common;
|
|
|
|
|
using Npgsql;
|
|
|
|
|
using Web.Core.DB;
|
|
|
|
|
|
|
|
|
|
namespace MySQLConnector {
|
|
|
|
|
public class PostgresDBTraits : IDBTraits {
|
|
|
|
|
|
|
|
|
|
public static readonly PostgresDBTraits instance = new PostgresDBTraits();
|
|
|
|
|
|
|
|
|
|
public DbConnection createConnection(string connectionString) {
|
|
|
|
|
return new Npgsql.NpgsqlConnection(connectionString);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public long LastInsertId(DbCommand command, ITableSpec table) {
|
|
|
|
|
string sequenceName = table.name + "_" + table.idName + "_seq";
|
|
|
|
|
using(DbCommand newCommand = command.Connection.CreateCommand()) {
|
|
|
|
|
if(command.Transaction != null) {
|
|
|
|
|
newCommand.Transaction = command.Transaction;
|
|
|
|
|
}
|
|
|
|
|
newCommand.CommandType = System.Data.CommandType.Text;
|
|
|
|
|
newCommand.CommandText = "SELECT CURRVAL('" + this.escapeIdentifier(sequenceName) + "')";
|
|
|
|
|
return (long)newCommand.ExecuteScalar();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string escapeIdentifier(string identifier) {
|
|
|
|
|
return "\"" + identifier.Replace("\"", "") + "\"";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string markParam(string param) {
|
|
|
|
|
return ":" + param;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool supportsIsolationLevel() {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|