Idempotent Migrations on HasDefaultValueSql or HasComputedColumnSql with line breaks adds whitespace
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
Reproduce the issue with HasDefaultValueSql and HasComputedColumnSql values containing line breaks, then run Script-Migration -Idempotent and inspect the generated SQL. Trace the idempotent migration script generation and add coverage showing that multiline SQL preserves its original whitespace without indentation; the workaround should no longer be needed.
Written by the indexing model from the issue text.
Description
If the user creates a model using HasDefaultValueSql(xyz) and the string xyz has line breaks in it, and if the user produces an idempotent SQL script by using Script-Migration -Idemptotent, then extra spaces are added to the value they passed in. E.g. if they call
HasDefaultValueSql("'Don't
GO
this way'")
then the SQL generated will look like this:
IF NOT EXISTS(SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'some_migration_identifier')
BEGIN
CREATE TABLE [TestEntity] (
[Id] int NOT NULL IDENTITY,
[Name] nvarchar(max) NULL DEFAULT N'Don''t
GO
this way',
CONSTRAINT [PK_TestEntity] PRIMARY KEY ([Id])
);
END;
Note that, because of the indentation, extra spaces have been added before 'GO' and 'this way'.
Similarly for HasComputedColumnSql().
But note: there is a workaround - the user can pass the following instead:
HasDefaultValueSql("CONCAT('Don't, CHAR(13), CHAR(10), 'GO', CHAR(13), CHAR(10), 'this way')")
- Dominant language
- C#
- Stars
- 14.8k
- Forks
- 3.4k
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 134
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/efcore
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
customer-reported
Difficulty 5/5 Over a week Newbie friendliness 38/100
-
area-cosmos area-vector-search
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
area-cosmos
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
area-tools needs-design
Difficulty 4/5 3-5 days Newbie friendliness 25/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100