关系 dbo.找不到 MyTable,而架构和表确实存在

本文关键字:存在 找不到 dbo MyTable 关系 | 更新日期: 2023-09-27 18:30:24

在Mono 3.10上的MVC 5.2应用程序中,我正在尝试通过实体框架6.1.1建立与PostgreSQL数据库的连接。为此,我采取了以下步骤:

  1. 包括通过 NuGet NpsqlNpsql.EntityFramework的包。
  2. Web.Config 中将节<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.1.1, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />添加到 configSections 元素中。
  3. Web.configsystem.dataDbProviderFactories元素添加了<remove invariant="Npgsql"></remove><add name="Npgsql" invariant="Npgsql" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.2, Culture=neutral" />
  4. 添加了以下与实体框架上下文连接的连接字符串<add name="ZkTestDatabaseConnection" connectionString="Server=localhost;Port=5432;Database=ZkTestDatabase;User Id=test;Password=password;CommandTimeout=20;" providerName="Npgsql" />
  5. 在 PostgreSQL 中创建了一个名为 dbo 的模式、一个名为 ZkTestDatabase 的数据库、一个名为 test 的用户以及一个名为 dbo.Crops 的表(请参阅此脚本)。

当我使用用户test登录并执行select * from dbo.Crops;时(我还尝试通过create table "dbo.Crops";而不是create table dbo.Crops;制作表格。我得到了正确的输出。

现在,当我转到带有模型Crop的页面时(按照约定,这映射到表Crops),我收到消息:

Npgsql.NpgsqlException
ERROR: 42P01: relation "dbo.Crops" does not exist
Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): Npgsql.
Exception stack trace:
at Npgsql.NpgsqlState+<ProcessBackendResponses>d__0.MoveNext () [0x00000] in 
<filename unknown>:0 at Npgsql.ForwardsOnlyDataReader.GetNextResponseObject 
(Boolean cleanup) [0x00000] in <filename unknown>:0 

我很高兴应用程序了解它需要连接到数据库并找到关系dbo.Crops。但是,我有点难过,找不到这种关系。

*编辑:执行select * from pg_tables;时返回以下内容:

     schemaname     |        tablename        | tableowner | tablespace | hasindexes | hasrules | hastriggers   
--------------------+-------------------------+------------+------------+------------+----------+-------------
 public             | dbo.Crops               | zktest     |            | t          | f        | f

我不知道为什么会出现此错误,并且在我有限的理解范围内我已经用尽了所有功能。我希望其他人看到一个可能的解决方案。

关系 dbo.找不到 MyTable,而架构和表确实存在

从pg_tables中选择一个 *,看看有什么结果。这应该会让你走上正确的道路。