我得到的最新错误是
ERROR: 42P01: relation "dbo.__MigrationHistory" does not exist
但我确信这只是因为之前的某些设置不正确。
我目前正在尝试首先设置 Entity Framework 4.4 代码以使用 Npgsql 2.0.12,我已经完成了以下操作并且现在似乎至少可以连接到数据库但是当我执行 context.saveChanges( );
为 .net 2.0.50727 更新了 machine.config;
< 添加名称="Npgsql 数据提供者"invariant="Npgsql"support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.12.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
将dll添加到项目中
将 app.config 更改为如下所示;
<configuration> <configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <system.data> <DbProviderFactories> <remove invariant="Npgsql"></remove> <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.12.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" /> </DbProviderFactories> </system.data> <connectionStrings> <add name="DataContext" connectionString="Server=127.0.0.1;Port=5432;Database=postgres;User Id=postgres;Password=*******;CommandTimeout=20;" providerName="Npgsql" /> </connectionStrings> </configuration>
传入的数据如下所示
公共(public)类动物 { [ key ] 公共(public) int Id { 得到;放; } 公共(public)字符串名称 { 得到;放; } 公共(public)字符串描述 { 得到;放; } 公共(public) int 年龄 { 得到;放; } public int NoOfLegs { 得到;放; }
其他一切都是通用的现成上下文设置
任何关于我做错了什么的帮助或提示或教程,任何事情都会有所帮助。这只是一点概念证明,但我不介意让它发挥作用。
附言抱歉代码格式使用不当,即使格式正确,堆栈交换也不会因为某种原因让我正确使用它。
最佳答案
Npgsql 不支持模式创建,因此您必须手动创建数据库。 然后为避免此错误,请在代码中的某处添加此语句(在您的情况下,它可能位于 Main() 函数的开头):
Database.SetInitializer<DataContext>(null);
使用您的 DbContext 实现代替 DataContext。
关于c# - npgsql 和 Entity Framework 代码首先设置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12545228/