Skip to content

Commit 54fdf11

Browse files
committed
Fix exception messages
1 parent 1b93528 commit 54fdf11

File tree

2 files changed

+33
-35
lines changed

2 files changed

+33
-35
lines changed

src/Thinktecture.EntityFrameworkCore.PostgreSQL/EntityFrameworkCore/Parameters/NpgsqlCollectionParameterFactory.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,13 @@ private static string BuildScalarStatement(
130130
var storeObject = StoreObjectIdentifier.Create(entityType, StoreObjectType.Table) ?? throw new Exception($"Could not create StoreObjectIdentifier for table '{entityType.Name}'.");
131131
var columnType = property.GetColumnType(storeObject);
132132
var columnName = property.GetColumnName(storeObject) ?? throw new Exception($"The property '{property.Name}' has no column name.");
133-
var escapedColumnName = sqlGenerationHelper.DelimitIdentifier(columnName);
134133

135134
sb.Append("SELECT ");
136135

137136
if (applyDistinct)
138137
sb.Append("DISTINCT ");
139138

140-
sb.Append("value::").Append(columnType).Append(" AS ").Append(escapedColumnName)
139+
sb.Append("value::").Append(columnType).Append(" AS ").Append(sqlGenerationHelper.DelimitIdentifier(columnName))
141140
.Append(" FROM jsonb_array_elements_text({1}::jsonb) AS t(value)")
142141
.Append(" LIMIT {0}");
143142

@@ -181,15 +180,14 @@ private string CreateSqlStatementForComplexType(IEntityType entityType, bool wit
181180
}
182181

183182
var columnName = property.GetColumnName(storeObject) ?? throw new Exception($"The property '{property.Name}' has no column name.");
184-
var escapedColumnName = _sqlGenerationHelper.DelimitIdentifier(columnName);
185183
var columnType = property.GetColumnType(storeObject) ?? throw new Exception($"The property '{property.Name}' has no column type.");
186184

187185
// jsonb_to_recordset matches JSON keys to column names in the AS clause.
188186
// System.Text.Json uses property names as JSON keys, so the AS clause must use property names
189187
// and alias them to column names in the SELECT for EF Core.
190188
var escapedPropertyName = _sqlGenerationHelper.DelimitIdentifier(property.Name);
191189

192-
sb.Append(escapedPropertyName).Append(" AS ").Append(escapedColumnName);
190+
sb.Append(escapedPropertyName).Append(" AS ").Append(_sqlGenerationHelper.DelimitIdentifier(columnName));
193191

194192
recordsetClause.Append(escapedPropertyName).Append(' ').Append(columnType);
195193

src/Thinktecture.EntityFrameworkCore.PostgreSQL/EntityFrameworkCore/TempTables/NpgsqlTempTableCreator.cs

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ private ICachedTempTableStatement CreatePrimaryKeyStatement(NpgsqlTempTablePrima
142142
{
143143
var storeObject = p.GetStoreObject();
144144
return _sqlGenerationHelper.DelimitIdentifier(
145-
p.GetColumnName(storeObject)
146-
?? throw new Exception($"Could not create StoreObjectIdentifier for table '{p.DeclaringType.Name}'."));
145+
p.GetColumnName(storeObject)
146+
?? throw new Exception($"The property '{p.Name}' has no column name."));
147147
});
148148

149149
var commaSeparatedColumns = String.Join(", ", columnNames);
@@ -153,26 +153,26 @@ private ICachedTempTableStatement CreatePrimaryKeyStatement(NpgsqlTempTablePrima
153153
return new CachedTempTableStatement<string>(commaSeparatedColumns,
154154
static (sqlGenerationHelper, name, commaSeparatedColumns) =>
155155
$"""
156-
DO $$
157-
BEGIN
158-
IF NOT EXISTS (
159-
SELECT 1 FROM pg_catalog.pg_constraint c
160-
JOIN pg_catalog.pg_class t ON t.oid = c.conrelid
161-
WHERE c.contype = 'p' AND t.relname = '{name}'
162-
AND t.relnamespace = pg_my_temp_schema()
163-
) THEN
164-
ALTER TABLE {sqlGenerationHelper.DelimitIdentifier(name)}
165-
ADD CONSTRAINT {sqlGenerationHelper.DelimitIdentifier($"PK_{name}_{Guid.NewGuid():N}")} PRIMARY KEY ({commaSeparatedColumns});
166-
END IF;
167-
END $$;
168-
""");
156+
DO $$
157+
BEGIN
158+
IF NOT EXISTS (
159+
SELECT 1 FROM pg_catalog.pg_constraint c
160+
JOIN pg_catalog.pg_class t ON t.oid = c.conrelid
161+
WHERE c.contype = 'p' AND t.relname = '{name}'
162+
AND t.relnamespace = pg_my_temp_schema()
163+
) THEN
164+
ALTER TABLE {sqlGenerationHelper.DelimitIdentifier(name)}
165+
ADD CONSTRAINT {sqlGenerationHelper.DelimitIdentifier($"PK_{name}_{Guid.NewGuid():N}")} PRIMARY KEY ({commaSeparatedColumns});
166+
END IF;
167+
END $$;
168+
""");
169169
}
170170

171171
return new CachedTempTableStatement<string>(commaSeparatedColumns, static (sqlGenerationHelper, name, commaSeparatedColumns) =>
172172
$"""
173-
ALTER TABLE {sqlGenerationHelper.DelimitIdentifier(name)}
174-
ADD CONSTRAINT {sqlGenerationHelper.DelimitIdentifier($"PK_{name}_{Guid.NewGuid():N}")} PRIMARY KEY ({commaSeparatedColumns});
175-
""");
173+
ALTER TABLE {sqlGenerationHelper.DelimitIdentifier(name)}
174+
ADD CONSTRAINT {sqlGenerationHelper.DelimitIdentifier($"PK_{name}_{Guid.NewGuid():N}")} PRIMARY KEY ({commaSeparatedColumns});
175+
""");
176176
}
177177

178178
private string GetTempTableCreationSql(IEntityType entityType, string tableName, NpgsqlTempTableCreationOptions options)
@@ -193,11 +193,11 @@ private ICachedTempTableStatement CreateCachedStatement(NpgsqlTempTableCreatorCa
193193
return new CachedTempTableStatement<string>(columnDefinitions,
194194
static (sqlGenerationHelper, name, columnDefinitions) =>
195195
$"""
196-
CREATE TEMP TABLE {sqlGenerationHelper.DelimitIdentifier(name)}
197-
(
198-
{columnDefinitions}
199-
);
200-
""");
196+
CREATE TEMP TABLE {sqlGenerationHelper.DelimitIdentifier(name)}
197+
(
198+
{columnDefinitions}
199+
);
200+
""");
201201
}
202202

203203
return new CachedTempTableStatement<string>(columnDefinitions,
@@ -206,12 +206,12 @@ private ICachedTempTableStatement CreateCachedStatement(NpgsqlTempTableCreatorCa
206206
var escapedTableName = sqlGenerationHelper.DelimitIdentifier(name);
207207

208208
return $"""
209-
CREATE TEMP TABLE IF NOT EXISTS {escapedTableName}
210-
(
211-
{columnDefinitions}
212-
);
213-
TRUNCATE TABLE {escapedTableName};
214-
""";
209+
CREATE TEMP TABLE IF NOT EXISTS {escapedTableName}
210+
(
211+
{columnDefinitions}
212+
);
213+
TRUNCATE TABLE {escapedTableName};
214+
""";
215215
});
216216
}
217217

@@ -235,7 +235,7 @@ private string GetColumnsDefinitions(NpgsqlTempTableCreatorCacheKey options)
235235

236236
var columnType = property.GetColumnType(storeObject.Value);
237237
var columnName = property.GetColumnName(storeObject.Value)
238-
?? throw new Exception($"Could not create StoreObjectIdentifier for table '{property.DeclaringType.Name}'.");
238+
?? throw new Exception($"The property '{property.Name}' has no column name.");
239239

240240
sb.Append('\t')
241241
.Append(_sqlGenerationHelper.DelimitIdentifier(columnName)).Append(' ')
@@ -321,7 +321,7 @@ private void CreatePkClause(
321321
{
322322
var storeObject = p.GetStoreObject();
323323
return p.GetColumnName(storeObject)
324-
?? throw new Exception($"Could not create StoreObjectIdentifier for table '{p.DeclaringType.Name}'.");
324+
?? throw new Exception($"The property '{p.Name}' has no column name.");
325325
});
326326

327327
sb.AppendLine(",");

0 commit comments

Comments
 (0)