在Mono 3.10上的MVC 5.2应用程序中,我试图通过Entity Framework 6.1.1与PostgreSQL数据库建立连接。为此,我采取了以下步骤:
Npsql
和Npsql.EntityFramework
。 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.1.1, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
部分添加到configSections
中的Web.Config
元素。<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" />
添加到DbProviderFactories
中system.data
的{{1}}元素。Web.config
。<add name="ZkTestDatabaseConnection" connectionString="Server=localhost;Port=5432;Database=ZkTestDatabase;User Id=test;Password=password;CommandTimeout=20;" providerName="Npgsql" />
的模式,一个名为dbo
的数据库,一个名为ZkTestDatabase
的用户和一个名为test
的表(参见{{3 }})。当我使用用户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;
我不知道为什么会出现这个错误,而且在我有限的理解中我已经耗尽了所有能力。我希望其他人看到可能的解决方案。
答案 0 :(得分:2)
从pg_tables执行select *,看看会有什么回来。这应该会让你走上正确的道路。