【发布时间】:2012-09-14 17:51:11
【问题描述】:
我最近遇到的错误是
ERROR: 42P01: relation "dbo.__MigrationHistory" does not exist
但我确信这只是因为之前的某些设置没有正确设置。
我目前正在尝试首先设置实体框架 4.4 代码以使用 Npgsql 2.0.12,我已经完成了以下操作,现在似乎至少正在连接到数据库,但是当我执行 context.saveChanges( );
-
为 .net 2.0.50727 更新了 machine.config;
将 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> -
传入的数据如下所示
公共类动物 { [钥匙] 公共 int ID { 获取;放; } 公共字符串名称 { 获取;放; } 公共字符串描述 { 获取;放; } 公共 int 年龄 { 得到;放; } 公共 int NoOfLegs { 得到;放; } }
其他一切都是通用的现成上下文设置
任何关于我做错了什么或提示或教程的帮助,任何东西都会有帮助。这只是一个小小的概念证明,但我不介意让它发挥作用。
附:对不起,代码格式的使用不当,堆栈交换不会让我出于某种原因正确使用它,即使它的格式正确。
【问题讨论】:
-
EF 将尝试访问 __MigrationHistory 并在此表不存在时捕获异常。错误是否会出现在您的应用中并导致您的应用崩溃?
-
这个应用程序非常简单,一个控制台应用程序,它只需创建一个上下文,然后执行一个 context.Animals.Add(entity)。此时它崩溃了,这也是由于 ef 的延迟加载而第一次调用初始化程序。我相信错误实际上是在 context.SaveChanges() 上引发的。编辑:我知道迁移历史不在数据库中,我想我可能错过了设置创建这些所需表的 Npgsql 的步骤,还是我只是手动添加它们?
-
应该自动添加表格。堆栈跟踪的任何机会?
-
我目前正在工作,但会尽快为您弄到一份。感谢您的帮助。
-
错误:“无法检查模型兼容性,因为数据库不包含模型元数据。只能检查使用 Code First 或 Code First 迁移创建的数据库的模型兼容性。”
标签: c# entity-framework ef-code-first npgsql