Don*_*hes 50 .net c# entity-framework entity-framework-4
我创建了一个"仅代码"POCO,用于使用Entity Framework 4和CTP4对现有数据库进行使用.当我运行查询时,我收到错误
自创建数据库以来,支持'xyzContext'上下文的模型已更改.手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer.例如,RecreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可选择使用新数据对其进行种子设定.
我不清楚为什么会发生这种情况或者我可以改变什么.我只创建了POCO,定义了一个简单的DbContext,做了一些调整,然后尝试运行一个简单的查询.由于我使用的是"仅代码",因此我不知道需要进行任何配置设置.我当然不想重新创建或删除数据库,因为它是一个现有的数据库.
谢谢你的任何想法.
Don*_*hes 77
我在Scott Guthrie博客上的这篇文章的评论中找到了答案.
http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx
对于那些看到这个例外的人:
"自创建数据库以来,支持'Production'上下文的模型已更改.手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer."
以下是该怎么做以及如何处理它:
首次创建模型时,我们运行DatabaseInitializer来执行创建数据库(如果不存在)或添加种子数据等操作.默认的DatabaseInitializer尝试将使用模型所需的数据库模式与存储在使用数据库创建的EdmMetadata表中的模式的哈希进行比较(当Code First是创建数据库的模式时).现有数据库将没有EdmMetadata表,因此不会有哈希...如果缺少该表,今天的实现将抛出.我们将在发送fial版本之前更改此行为,因为它是默认版本.在此之前,现有数据库通常不需要任何数据库初始化程序,因此可以通过调用以下内容类型来关闭它:
Database.SetInitializer<Production>(null);
Run Code Online (Sandbox Code Playgroud)
小智 31
这是CTP4中的错误,用于将EF与预先存在的数据库一起使用.
你可以通过调用来修复它:
Database.SetInitializer<YourContext>(null);
Run Code Online (Sandbox Code Playgroud)
在Global.asax的Application_Start方法中
ris*_*ism 13
我在上面评论过,当我只是玩EF5时,它的工作就是熟悉它.现在我正在编写"实际"代码,并且我已经放弃了在代码中为每个上下文设置数据库初始化程序,因为我已经决定使用MEF实例化任何DbContext并将所有配置依赖项注入可组合部分.
所以我再次立即遇到上述错误,但这次我选择使用配置文件条目解决它,如下所示.
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<contexts>
<context type="Basd.Erp.ContactContext, Basd.Erp" disableDatabaseInitialization="true"></context>
</contexts>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
因此,通过在entityFramework的配置文件部分中设置disableDatabaseInitialization ="true",您可以克服上述错误,因为它不在代码中,其中一个好处是能够"更轻松地"使用抽象的构建器/工厂来创建上下文.
我所要做的就是放下桌子__MigrationHistory。
语境:
当我更改表的名称时,我收到此错误。将注释添加[Table("NewTableName")]到我的一个模型后,实体框架生成了一张__MigrationHistory表。
| 归档时间: |
|
| 查看次数: |
44419 次 |
| 最近记录: |