关系 dbo.找不到 MyTable,而架构和表确实存在
本文关键字:存在 找不到 dbo MyTable 关系 | 更新日期: 2023-09-27 18:30:24
在Mono 3.10上的MVC 5.2应用程序中,我正在尝试通过实体框架6.1.1建立与PostgreSQL数据库的连接。为此,我采取了以下步骤:
- 包括通过 NuGet
Npsql
和Npsql.EntityFramework
的包。 - 在
Web.Config
中将节<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.1.1, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
添加到configSections
元素中。 - 为
Web.config
中system.data
的DbProviderFactories
元素添加了<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" />
。 - 添加了以下与实体框架上下文连接的连接字符串
<add name="ZkTestDatabaseConnection" connectionString="Server=localhost;Port=5432;Database=ZkTestDatabase;User Id=test;Password=password;CommandTimeout=20;" providerName="Npgsql" />
。 - 在 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
我不知道为什么会出现此错误,并且在我有限的理解范围内我已经用尽了所有功能。我希望其他人看到一个可能的解决方案。
从pg_tables中选择一个 *,看看有什么结果。这应该会让你走上正确的道路。