Reputation: 377
I have been working on an ASP.NET MVC Core 2.0 project (targeting .NET Core 2.0) that needs to make use of Entity Framework. The database to be used already exists and I can't change it. I have added all the required references to Entity Framework Core 2.0.
However, when I run the following scaffolding command from the Nuget Package Manager Console, I get POCO model classes for the tables with different capitalization as compared to the original tables. In addition to other differences, columns with underlines in their names are represented by properties without the underlines.
How can I force the scaffolding to leave all table and column names as is when the POCO model classes are generated?
Example of scaffold command:
Scaffold-DbContext "Server= Info;Database=Vehicles;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models –force
Upvotes: 14
Views: 18387
Reputation: 71
Solution: You have to update to .Net Core 2.1+
, then you can run Scaffold-DbContext -UseDatabaseNames
. I have tried this in Net 2.1 RC, it's working now.
Upvotes: 6
Reputation: 30425
The -UseDatabaseNames
option is intended to preserve the names exactly as they are in the database (with only minor corrections if they aren't valid C# identifiers).
Unfortunately, this option got left off the Scaffold-DbContext
command in version 2.0 (issue #9146) and it wasn't applied to property names (issue #9820). You'll have to wait for EF Core 2.1 to use it as it was intended. If you're eager to try it sooner, you can always use the nightly builds.
Upvotes: 23