57

我一直在为我正在进行的一个新项目使用 Entity Framework 7 和 ASP.NET 5,但遇到了障碍。我正在工作的团队使用 DBA 优先的开发方法;即数据库由 DBA 设计,然后开发人员更改代码以补偿模型更改。

使用 EF6,这很有效,因为我们可以使用 EDMX 设计器的“更新”功能来更新代码。一键,我们得到了新的类,我们就完成了。但是,在 EF7 中,一切都不同了。没有更多的设计器,我们应该使用 Code-First,根据 EF 团队的一些博客帖子,它也应该支持“Database-First”代码生成。

但是,我无法弄清楚如何在 ASP.NET 5 应用程序中使用 Visual Studio 2015 CTP6 执行此操作。工具支持还在那里,还是我不走运?它甚至会到来吗?

4

4 回答 4

56

在最新版本中,可以使用 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软件包才能使命令正常工作。

于 2015-03-27T13:04:00.297 回答
12

这可以使用 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 或其他相关命令,请按照另一个答案的评论中提到的这个链接。

PS:这是当前的命令列表[在撰写本文时,最后更新于 8 月 21 日]:

ASP.NET - EntityFramework Wiki -- NuGet/DNX 命令

于 2015-10-28T16:52:27.380 回答
9

以下是 .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 作为依赖项,因为它仅在工具中需要。

于 2016-05-25T08:07:33.453 回答
2

@ErikEJ 为此开发了一个非常有用的工具。只需右键单击项目并为您提供 SQL 服务器实例即可生成 POCO 类。您可以从这里下载它,这里清楚地提到步骤。

于 2018-03-30T06:49:45.690 回答