我正在使用ASP.NET 5 Web应用程序模板(使用EF7和MVC 6),具有单独的用户帐户的模板,我遇到以下问题:
当我将自己的DBSet添加到ApplicationDbContext类,然后转到试图使用这个新DBSet的页面时,它不起作用,我明白了:
A database operation failed while processing the request.
SqlException: Invalid object name 'WallMessageModel'.
There are pending model changes for ApplicationDbContext
Scaffold a new migration for these changes and apply them to the database from the command line:
dnx . ef migration add [migration name]
dnx . ef migration apply
现在,当我运行这些命令或任何“dnx”命令时,我得到:
CategoryInfo NotSpecified: Error: Unable t...stemindsWebsite:String, RemoteException FullyQualifiedErrorId : NativeCommandError
如果我试图运行任何“k”命令即可:
CategoryInfo : ObjectNotFound: k:String, CommandNotFoundException FullyQualifiedErrorId : CommandNotFoundException
我正在使用"EntityFramework.SqlServer": "7.0.0-beta5", "EntityFramework.Commands": "7.0.0-beta5"
我尝试使用7.0.0- *版本,它仍然不适合我。你能告诉我我做错了什么吗?
基本上,我认为我的机器上没有正确安装EF命令(通过Visual Studio 2015 / PowerShell)。但是,似乎没有任何参考显示如何安装这些(在使用EF7时它们不应该内置到VS2015中吗?)。
答案 0 :(得分:1)
将另一个DbSet添加到ApplicationDbContext
类或添加/修改任何其他现有实体类时,运行时模型将从数据库模型更改。因此,您需要构建一个新的迁移并将其应用于数据库,以便两个模型彼此同步。正如异常消息所示,您应该运行这些命令来执行此操作。
对于那些未运行的命令(或任何其他dnx命令),dnx命令不是在VS2015中构建的。它们来自Visual Studio的Microsoft ASP.NET和Web Tools扩展。请确认您已为VS安装了它。这将使您能够运行dnx命令。 k
是一个非常古老的术语,它已重命名为dnx
。 beta5也是旧版本,最新版本是RC1,它有更多功能。有关如何安装和使用Web Tools的详细信息,请访问https://get.asp.net/