如何防止Entity Framework Core 2.0重命名生成的类中的表和列(数据库优先)

时间:2017-10-25 14:19:47

标签: asp.net-core-mvc entity-framework-core

我一直在研究需要使用Entity Framework的ASP.NET MVC Core 2.0项目(针对.NET Core 2.0)。要使用的数据库已经存在,我无法更改它。我已经向Entity Framework Core 2.0添加了所有必需的引用。

但是,当我从Nuget包管理器控制台运行以下脚手架命令时,我获得了与原始表相比具有不同大小写的表的POCO模型类。除了其他差异之外,名称中带有下划线的列由没有下划线的属性表示。

如何在生成POCO模型类时强制脚手架保留所有表名和列名?

脚手架命令的示例。 Scaffold-DbContext“Server = Info; Database = Vehicles; Trusted_Connection = True;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force

(第一次发布到Stack Overflow。感谢您的帮助。)

2 个答案:

答案 0 :(得分:6)

-UseDatabaseNames选项旨在保留名称与数据库中的名称完全相同(如果它们不是有效的C#标识符,则只进行少量更正)。

不幸的是,此选项在版本2.0(问题#9146)中不在Scaffold-DbContext命令中,并且未应用于属性名称(问题#9820)。您必须等待EF Core 2.1按预期使用它。如果您渴望尽早尝试,可以随时使用the nightly builds

答案 1 :(得分:2)

解决方案:您必须更新为。Net Core 2.1+,然后才能运行Scaffold-DbContext -UseDatabaseNames。我在Net 2.1 RC中试过这个,它现在正在运行。