我在Scott Guthrie博客的这篇文章的评论中找到了答案。
http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-pre-first-with-
an-existing-
database.aspx
对于那些看到此异常的人:
“自创建数据库以来,支持’生产’上下文的模型已更改。要么手动删除/更新数据库,要么使用IDatabaseInitializer实例调用Database.SetInitializer。”
这是正在发生的事情以及如何处理:
首次创建模型时,我们运行DatabaseInitializer进行诸如创建数据库(如果数据库不存在)或添加种子数据之类的操作。默认的DatabaseInitializer尝试将使用该模型所需的数据库架构与存储在使用数据库创建的Edmmetadata表中的架构的哈希进行比较(当Code
First是创建数据库的数据库时)。现有的数据库将没有Edmmetadata表,因此也将没有哈希表,如果缺少该表,今天的实现将被抛出。由于它是默认版本,因此在发布最终版本之前,我们将努力更改此行为。在此之前,现有数据库通常不需要任何数据库初始化程序,因此可以通过调用以下上下文类型将其关闭:
Database.SetInitializer<Production>(null);



