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-&gt; NuGet Package Manager-&gt; Package Manager Console 并点击以下命令:

    Add-Migration MigrationName Update-Database

然后再次检查 SQL Server 对象资源管理器或构建并运行您的项目。

【讨论】:

很好的答案。我完全错过了那一步。我希望我可以将其标记为“正确”。 在我的例子中,表名是“States”,而在 ApplicationDbContext 中,我将它用作 DBSet 的 State。使其复数(州)解决了我的问题【参考方案3】:

您的数据库中有MoviesMovie 表吗?

既然你说dotnet ef migrations add --context MvcMovie2Context 失败,让我相信你的模型没有反映在数据库模式中。此外,据我所知,您需要提供迁移名称,这可能就是您收到错误的原因。

请尝试运行以下命令。

1.dotnet ef migrations add "AddedMovieEntity" --context MvcMovie2Context

2.dotnet ef database update --context MvcMovie2Context

希望这次第 1 步能够成功运行,从那里您应该会看到一个包含电影实体架构的迁移文件。在第 2 步之后,您应该会在数据库中看到相应的表。

【讨论】:

以上是关于SqlException:无效的对象名称“电影”的主要内容,如果未能解决你的问题,请参考以下文章

PETAPOCO - 无效的对象名称

ExecuteSqlCommand 返回“无效的对象名称”错误

无效的对象名称“dbo.UserRoles”

HSQLDB + JUnit + Hibernate:java.sql.SQLException:无效的模式名称

SQLException 未处理

java.sql.SQLException 对象名无效