使用现有的数据库与ASP.NET 5和EF7(beta 7)

4

我正在尝试使用ASP.NET和EF 7 beta 7的空模板项目连接到现有的数据库。这是我的project.json文件内容:

{
  "webroot": "wwwroot",
  "userSecretsId": "aspnet5-Titanes2015-409e9e37-b7bb-4185-b7aa-6dc336087524",
  "version": "1.0.0-*",

  "dependencies": {
    "EntityFramework.Commands": "7.0.0-beta7",
    "EntityFramework.SqlServer": "7.0.0-beta7",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.Google": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta7",
    "Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta7",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta7",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta7",
    "Microsoft.AspNet.Mvc": "6.0.0-beta7",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta7",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
    "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta7",
    "Microsoft.Framework.Logging": "1.0.0-beta7",
    "Microsoft.Framework.Logging.Console": "1.0.0-beta7",
    "Microsoft.Framework.Logging.Debug" : "1.0.0-beta7",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta7"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
  ],

  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ],

  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=192.168.XX.XXX\\devsql;Database=XXXXXXX;Trusted_Connection=True;user id=XXXXXX;password=XXXXXX;MultipleActiveResultSets=true"
    }
  },

  "EntityFramework": {
    "ApplicationDbContext": {
      "ConnectionStringKey": "Data:DefaultConnection:ConnectionString"
    }
  },

  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}

现在,我已经在谷歌上搜索了很多内容,并检查了以下问题:

Database-first EF7-beta7 dnx ef dbcontext scaffold命令失败

从现有数据库EF7生成代码

我尝试运行以上所有命令,正如那些帖子中提到的:

dnx ef dbcontext scaffold "ConnectionString" EntityFramework.SqlServer
dnx . ef dbcontext scaffold "<connectionString>"
Scaffold-DbContext '<connectionString>'

每次我都会遇到以下错误:

无法识别“dnx”作为命令、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

我做错了什么?
从空模板项目访问我的远程数据库应该是一个非常简单的过程,但我已经尝试了一段时间。有人能指点我正确的方向吗?

尝试重新安装 dnvm - Henk Mollema
从PowerShell窗口中,我运行了dnvm并注意到它显示beta5。我运行了dnvm update-self并更新到beta8-15518,但这可能仍然不好,因为我在其他所有地方都使用beta7。尽管如此,我仍无法让上述命令正常工作,并且在尝试运行dnx ef dbcontext scaffold "ConnectionString" EntityFramework.SqlServer时收到相同的消息。 - erictrigo
DNVM beta 8 应该是正确的。它使用 NuGet 作为稳定源,因此 dnvm upgrade 命令会获取 beta7 版本。当运行 dnx web 命令时,您是否也遇到了相同的错误? - Henk Mollema
我得到了“未识别 'dnx' 为 cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试”。所以无论我在“dnx”后添加什么,它都会出错。 - erictrigo
让我们在聊天中继续这个讨论 - erictrigo
显示剩余2条评论
1个回答

3
在聊天中讨论后,我们发现将已安装的运行时从 C:\Users\<username>\.dnx\runtimes 目录下删除,并使用 dnvm upgrade 安装最新版本是解决方案。
提示:首先检查 dnvm 是否更新到最新版本。您可以使用 dnvm update-self 更新它,或通过删除 C:\Users\<username>\.dnx\bin 文件夹中的内容并运行 此 PowerShell 脚本 来重新安装它。

通常我需要运行dnvm listdnvm use来启动程序。 - Leonardo Herrera
我只是好奇,但是顺便问一下 - 有人偶然发现如何使dnvm和相关工具在服务器上运行全局运行时缓存吗?我们在我的工作中使用ADDS,并在隔离的项目中使用dnx。我知道可以安装到全局运行时目录,但获取所有相关工具而不是用户帐户似乎是不可逾越的问题。 - Nathan Teague

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接