Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/NPoco.Abstractions/IDatabaseType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,7 @@ public interface IDatabaseType
void PreExecute(DbCommand cmd);
object ProcessDefaultMappings(PocoColumn pocoColumn, object value);
bool UseColumnAliases();

bool EscapeTableColumAliasNames { get; set; }
}
}
4 changes: 3 additions & 1 deletion src/NPoco/DatabaseType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public abstract partial class DatabaseType : IDatabaseType

readonly Dictionary<Type, DbType> typeMap;

public bool EscapeTableColumAliasNames { get; set; } = true;

public DatabaseType()
{
typeMap = new Dictionary<Type, DbType>();
Expand Down Expand Up @@ -259,7 +261,7 @@ public virtual async Task InsertBulkAsync<T>(IDatabase db, IEnumerable<T> pocos,
/// <param name="typeName"></param>
/// <param name="providerName"></param>
/// <returns></returns>
public static DatabaseType Resolve(string typeName, string providerName)
public static DatabaseType Resolve(string typeName, string providerName, bool escapeTableColumAliasNames = true)
{
// Try using type name first (more reliable)
if (typeName.StartsWith("MySql"))
Expand Down
13 changes: 8 additions & 5 deletions src/NPoco/DatabaseTypes/PostgreSQLDatabaseType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,20 @@ public override object MapParameterValue(object value)

public override string EscapeSqlIdentifier(string str)
{
return string.Format("\"{0}\"", str);
return EscapeTableColumAliasNames ? string.Format("\"{0}\"", str) : str;
}

private void AdjustSqlInsertCommandText(DbCommand cmd, string primaryKeyName)
{
cmd.CommandText += string.Format(" returning {0} as NewID", EscapeSqlIdentifier(primaryKeyName));
if (primaryKeyName != "ID")
{
cmd.CommandText += string.Format(" returning {0} as NewID", EscapeSqlIdentifier(primaryKeyName));
}
}

public override object ExecuteInsert<T>(IDatabase db, DbCommand cmd, string primaryKeyName, bool useOutputClause, T poco, object[] args)
{
if (primaryKeyName != null)
if (!string.IsNullOrEmpty(primaryKeyName))
{
AdjustSqlInsertCommandText(cmd, primaryKeyName);
return ((IDatabaseHelpers)db).ExecuteScalarHelper(cmd);
Expand Down Expand Up @@ -62,7 +65,7 @@ public override string GetParameterPrefix(string connectionString)

public override string GetProviderName()
{
return "Npgsql2";
return "Npgsql";
}
}
}
11 changes: 7 additions & 4 deletions test/NPoco.Tests/Common/InMemoryDatabase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,20 @@ public class InMemoryDatabase : TestDatabase
public InMemoryDatabase()
{
DbType = DatabaseType.SQLite;
ConnectionString = "Data Source=:memory:;Version=3;";
var builder = new Microsoft.Data.Sqlite.SqliteConnectionStringBuilder()
{
Mode = Microsoft.Data.Sqlite.SqliteOpenMode.Memory
};
ConnectionString = builder.ConnectionString; // "Data Source=:memory:;Version=3;";
ProviderName = DatabaseType.SQLite.GetProviderName();

RecreateDataBase();

EnsureSharedConnectionConfigured();
RecreateDataBase();
}

public override void EnsureSharedConnectionConfigured()
{
if (Connection != null) return;


lock (_syncRoot)
{
Expand Down