diff --git a/src/EFCore.Design/Scaffolding/Internal/RelationalScaffoldingModelFactory.cs b/src/EFCore.Design/Scaffolding/Internal/RelationalScaffoldingModelFactory.cs index af451d31004..be28f80b28f 100644 --- a/src/EFCore.Design/Scaffolding/Internal/RelationalScaffoldingModelFactory.cs +++ b/src/EFCore.Design/Scaffolding/Internal/RelationalScaffoldingModelFactory.cs @@ -194,6 +194,11 @@ protected virtual ModelBuilder VisitDatabaseModel([NotNull] ModelBuilder modelBu modelBuilder.Model.SetDatabaseName(databaseModel.DatabaseName); } + if (!string.IsNullOrEmpty(databaseModel.Collation)) + { + modelBuilder.UseCollation(databaseModel.Collation); + } + VisitSequences(modelBuilder, databaseModel.Sequences); VisitTables(modelBuilder, databaseModel.Tables); VisitForeignKeys(modelBuilder, databaseModel.Tables.SelectMany(table => table.ForeignKeys).ToList()); @@ -497,7 +502,7 @@ protected virtual PropertyBuilder VisitColumn([NotNull] EntityTypeBuilder builde if (column.Collation != null) { - property.HasComment(column.Collation); + property.UseCollation(column.Collation); } if (!(column.Table.PrimaryKey?.Columns.Contains(column) ?? false)) diff --git a/test/EFCore.Design.Tests/Scaffolding/Internal/RelationalScaffoldingModelFactoryTest.cs b/test/EFCore.Design.Tests/Scaffolding/Internal/RelationalScaffoldingModelFactoryTest.cs index eb03e60bacb..d9ef9744d46 100644 --- a/test/EFCore.Design.Tests/Scaffolding/Internal/RelationalScaffoldingModelFactoryTest.cs +++ b/test/EFCore.Design.Tests/Scaffolding/Internal/RelationalScaffoldingModelFactoryTest.cs @@ -1995,6 +1995,50 @@ public void Column_and_table_comments() Assert.Equal("An int column", column.GetComment()); } + [ConditionalFact] + public void Database_collation() + { + var database = new DatabaseModel + { + Collation = "SomeDatabaseCollation" + }; + + var model = _factory.Create(database, new ModelReverseEngineerOptions()); + Assert.Equal("SomeDatabaseCollation", model.GetCollation()); + } + + [ConditionalFact] + public void Column_collation() + { + var database = new DatabaseModel + { + Tables = + { + new DatabaseTable + { + Database = Database, + Name = "Table", + Columns = + { + IdColumn, + new DatabaseColumn + { + Table = Table, + Name = "Column", + StoreType = "int", + Collation = "SomeColumnCollation" + } + } + } + } + }; + + var model = _factory.Create(database, new ModelReverseEngineerOptions()); + + var column = model.FindEntityType("Table").GetProperty("Column"); + Assert.Equal("SomeColumnCollation", column.GetCollation()); + } + [ConditionalTheory] [InlineData(false, false, false)] [InlineData(false, false, true)]