是否有实体框架 7 数据库优先 POCO 生成器?
Posted
技术标签:
【中文标题】是否有实体框架 7 数据库优先 POCO 生成器?【英文标题】:Is there an Entity Framework 7 Database-First POCO Generator? 【发布时间】:2015-03-27 12:33:14 【问题描述】:我一直在使用 Entity Framework 7 和 ASP.NET 5 来处理我正在处理的一个新项目,但我遇到了障碍。我正在工作的团队使用 DBA 优先的开发方法;即数据库由 DBA 设计,然后开发人员更改代码以补偿模型更改。
使用 EF6,这很有效,因为我们可以使用 EDMX 设计器的“更新”功能来更新代码。一键,我们得到了新的类,我们就完成了。但是,在 EF7 中,一切都不同了。没有更多的设计器,我们应该使用 Code-First,根据 EF 团队的一些博客帖子,它也应该支持“Database-First”代码生成。
但是,我无法弄清楚如何在 ASP.NET 5 应用程序中使用 Visual Studio 2015 CTP6 执行此操作。工具支持还在那里,还是我不走运?它甚至会到来吗?
【问题讨论】:
先查找“逆向工程代码” 是的,我花了几天时间搜索。很多关于如何使用 EF6 执行此操作的信息,但使用 EF7 似乎没有办法。目前,我创建了一个 EF6 项目,在那里完成了逆向工程,并将文件复制到我的 EF7 项目中(由于 EF7 中不存在命名空间而进行了一些修改),但从长远来看,我我需要一个更稳定的解决方案。 我认为它们的差异不足以产生如此大的差异。我认为 EF7 仍处于测试阶段,因此可能还没有完全支持它。 github.com/aspnet/EntityFramework/releases 作为对任何读者的警告,这个过程仍然充满了错误。这些答案可能对您有所帮助,但现阶段仍然存在错误,有些人无法使其正常工作。 VS2017 更新:如果您使用的是最新最好的微软产品套件,这里是他们的教程:docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/… 【参考方案1】:在最新版本中,可以使用 dnx 命令提示符和 PowerShell 命令来执行此操作,是的
Scaffold-DbContext '<connectionString>' EntityFramework.MicrosoftSqlServer
或
dnx ef dbcontext scaffold "<connectionString>" EntityFramework.MicrosoftSqlServer
或(来自 EF Core RC2)
dotnet ef dbcontext scaffold "<connectionString>" Microsoft.EntityFrameworkCore.SqlServer
您必须安装 Microsoft.EntityFrameworkCore.Tools
软件包才能使命令正常工作。
【讨论】:
你能告诉我在哪里运行这个命令.. 在哪里可以找到 dnx 命令提示符 我的错……知道了blogs.msdn.com/b/sujitdmello/archive/2015/04/23/…【参考方案2】:这可以使用 NuGet 包管理器控制台或命令提示符来完成。我尝试使用命令提示符。在命令提示符下导航到项目文件夹后,我使用了类似的命令:
dnx ef dbcontext scaffold "Data Source=myServerName; Initial Catalog=myDatabaseName; Integrated Security=True" EntityFramework.SqlServer
我收到有关丢失包的错误:
EntityFramework.Commands
EntityFramework.SqlServer.Design
在继续之前跟随此命令:
dnu restore
实际所需的包可能会根据您 project.json 文件中提到的框架而有所不同。
如果您无法在命令提示符下执行 dnx 或其他相关命令,请按照另一个答案的 cmets 中提到的 THIS 链接。
P.S.:这是当前的命令列表 [在撰写本文时,最后一次更新是 8 月 21 日]:
ASP.NET - EntityFramework Wiki -- NuGet/DNX Commands
【讨论】:
为 .NET Core RC2 的新语法添加了单独的答案(2016 年 5 月)【参考方案3】:以下是 .NET Core RC2 的更新参数(2016 年 5 月)
dotnet ef dbcontext scaffold -c RRStoreContext -o Model
"Data Source=(local);Initial Catalog=DBNAME;Integrated Security=True"
Microsoft.EntityFrameworkCore.SqlServer --force
注意Microsoft.EntityFrameworkCore.SqlServer
是需要在命令中使用的包的新名称。我添加了force
参数来覆盖现有文件。 'o' 参数是输出目录名。现在是 dotnet
而不是 dnx
。
截至当前版本,您在 project.json
中需要的依赖项是
"dependencies":
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools":
"type": "build",
"version": "1.0.0-preview1-final"
,
注意:“构建”类型意味着引用您的程序集的任何内容都不会将此 DLL 作为依赖项,因为它仅用于工具。
【讨论】:
另外,值得注意的是 --force 标志会覆盖现有文件 而 -o 是您要输出到的文件夹的名称。那一般是Models
Here 是指向此文档的链接。【参考方案4】:
@ErikEJ 为此开发了一个非常有用的工具。只需右键单击项目即可生成 POCO 类并为您提供 SQL Server 实例。您可以从 here 下载它,并清楚地提到了步骤 here。
【讨论】:
以上是关于是否有实体框架 7 数据库优先 POCO 生成器?的主要内容,如果未能解决你的问题,请参考以下文章