Skip to content

Commit d16e579

Browse files
Fix temp table.
1 parent dd0a6c5 commit d16e579

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

src/PhenX.EntityFrameworkCore.BulkInsert.SqlServer/SqlServerDialectBuilder.cs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,22 @@ internal class SqlServerDialectBuilder : SqlDialectBuilder
1414

1515
protected override bool SupportsMoveRows => false;
1616

17-
public override string CreateTableCopySql(string templNameName, TableMetadata tableInfo, IReadOnlyList<PropertyMetadata> columns)
17+
public override string CreateTableCopySql(string tempTableName, TableMetadata tableInfo, IReadOnlyList<PropertyMetadata> columns)
1818
{
1919
var q = new StringBuilder();
20-
q.Append("SELECT");
21-
q.AppendColumns(columns);
22-
q.Append($"INTO {templNameName} FROM {tableInfo.QuotedTableName} WHERE 1 = 0;");
20+
q.Append($"CREATE TABLE {tempTableName} (");
21+
22+
foreach (var column in columns)
23+
{
24+
q.Append($"{column.QuotedColumName} {column.StoreDefinition}");
25+
if (column != columns[^1])
26+
{
27+
q.Append(',');
28+
}
29+
q.AppendLine();
30+
}
31+
32+
q.AppendLine(")");
2333

2434
return q.ToString();
2535
}
@@ -70,8 +80,10 @@ public override string BuildMoveDataSql<T>(
7080

7181
if (onConflictTyped.Update != null)
7282
{
83+
var properties = target.GetProperties(false);
84+
7385
q.AppendLine($"WHEN MATCHED THEN UPDATE SET ");
74-
q.AppendJoin(", ", GetUpdates(target, insertedProperties, onConflictTyped.Update));
86+
q.AppendJoin(", ", GetUpdates(target, properties, onConflictTyped.Update));
7587
q.AppendLine();
7688
}
7789

tests/PhenX.EntityFrameworkCore.BulkInsert.Tests/Tests/Basic/BasicTestsBase.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,6 @@ await _context.ExecuteBulkInsertAsync(entities,
181181
[SkippableFact]
182182
public async Task InsertsEntities_MultipleTimes_With_Conflict_On_Id()
183183
{
184-
Skip.If(_context.Database.ProviderName!.Contains("SqlServer", StringComparison.InvariantCultureIgnoreCase));
185-
186184
// Arrange
187185
var entities = new List<TestEntity>
188186
{

0 commit comments

Comments
 (0)