当架构和表存在时,找不到关系dbo.MyTable

时间:2014-11-15 02:03:40

标签: c# entity-framework postgresql mono npgsql

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

  1. 通过NuGet包含包NpsqlNpsql.EntityFramework
  2. <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.1.1, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />部分添加到configSections中的Web.Config元素。
  3. <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" />添加到DbProviderFactoriessystem.data的{​​{1}}元素。
  4. 添加了以下与实体框架上下文连接的连接字符串Web.config
  5. 在PostgreSQL中为此数据库创建了一个名为<add name="ZkTestDatabaseConnection" connectionString="Server=localhost;Port=5432;Database=ZkTestDatabase;User Id=test;Password=password;CommandTimeout=20;" providerName="Npgsql" />的模式,一个名为dbo的数据库,一个名为ZkTestDatabase的用户和一个名为test的表(参见{{3 }})。
  6. 当我使用用户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;

    我不知道为什么会出现这个错误,而且在我有限的理解中我已经耗尽了所有能力。我希望其他人看到可能的解决方案。

1 个答案:

答案 0 :(得分:2)

从pg_tables执行select *,看看会有什么回来。这应该会让你走上正确的道路。