SqlException:无效的对象名称“电影”
Posted
技术标签:
【中文标题】SqlException:无效的对象名称“电影”【英文标题】:SqlException: Invalid object name 'Movie' 【发布时间】:2017-05-08 18:39:20 【问题描述】:我正在尝试按照下面链接中的教程创建一个应用程序,该应用程序显示来自数据库的电影列表,具有 crud 功能,但我正在尝试添加用户登录。 https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/
我一直在试图弄清楚如何添加和更新电影数据库的迁移。当我在没有用户登录的情况下按照教程进行操作时,我能够做到这一点,但是一旦我添加了用户登录,似乎有一个我没有发现的问题。
创建模型类后,我正在尝试应用以下步骤进行迁移
-
转到命令行并访问包含项目的文件夹
它
应用以下命令
dotnet restore
dotnet ef migrations add --context MvcMovie2Context
(当我运行这个命令时,我得到 (Missing required argument ''.) 错误)
dotnet ef database update --context MvcMovie2Context
(这个命令似乎由于某种原因起作用)
当我运行应用程序并单击电影链接时,我收到以下错误
SqlException: Invalid object name 'Movie'.
System.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__107_0(Task<SqlDataReader> result)
我查看了我的模型、视图和控制器类,以检查我是否输入了拼写错误或语法错误,这会导致对象名称“电影”无效,所以我认为这意味着我的电影数据库没有创建.
我已经按照教程多次重启了项目
我附上了命令行错误和浏览器错误的截图。如果有人可以提供任何提示或建议,我将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:即使所有表都已正确创建,我也遇到了类似的错误。原来我的连接字符串是错误的。
【讨论】:
为我节省了几个小时!非常感谢:)【参考方案2】:由于错误为SqlException: Invalid object name 'Movie'
,这意味着名为“电影”的表尚未创建或您所引用的数据库尚未创建。
要查看是否已创建数据库或表“电影”,请打开 SQL Server 对象资源管理器并检查数据库名称是否与 appsettings.json
中的相同。如果尚未创建数据库或表,则可能需要迁移。
要迁移,请打开 Tools-> NuGet Package Manager-> Package Manager Console
并点击以下命令:
Add-Migration MigrationName
Update-Database
然后再次检查 SQL Server 对象资源管理器或构建并运行您的项目。
【讨论】:
很好的答案。我完全错过了那一步。我希望我可以将其标记为“正确”。 在我的例子中,表名是“States”,而在 ApplicationDbContext 中,我将它用作 DBSet 的 State。使其复数(州)解决了我的问题【参考方案3】:您的数据库中有Movies
或Movie
表吗?
既然你说dotnet ef migrations add --context MvcMovie2Context
失败,让我相信你的模型没有反映在数据库模式中。此外,据我所知,您需要提供迁移名称,这可能就是您收到错误的原因。
请尝试运行以下命令。
1.dotnet ef migrations add "AddedMovieEntity" --context MvcMovie2Context
2.dotnet ef database update --context MvcMovie2Context
希望这次第 1 步能够成功运行,从那里您应该会看到一个包含电影实体架构的迁移文件。在第 2 步之后,您应该会在数据库中看到相应的表。
【讨论】:
以上是关于SqlException:无效的对象名称“电影”的主要内容,如果未能解决你的问题,请参考以下文章
ExecuteSqlCommand 返回“无效的对象名称”错误