2013-03-08 106 views
4

我建立一个ASP.Net MVC4 Web应用程序与实体框架5.我不得不使用现有的SQL Server数据库,但也想用代码第一次,所以我跟着这个教程http://msdn.microsoft.com/en-us/data/jj200620.aspx实体框架自动迁移现有的数据库

我的应用程序使用实体框架自动迁移。

我在整个开发阶段使用的sql server的版本是2008,但是,在最后一刻我被告知数据库需要在sql server 2005上工作。我得到了我在sql server中使用的数据库2008设置(确切的表格,属性名称,关系等)在sql server 2005上。但是,通过我的web config等设置指向sql server 2005数据库,当我对我的一个模型类进行更改时,自动迁移不工作。

我收到以下错误

目前已经在 数据库名为“tblcourseprofessionTarget”的对象。

任何人都可以请帮忙吗?

谢谢。

道歉,如果我没有添加足够的信息。

+0

您是手动创建2005数据库还是使用migrate.exe(或使用Update-Database命令)?如果你手动完成,你是否复制到__MigrationHistory表(通常是系统表)? – Leo 2013-03-10 13:44:33

回答

4

我有一个类似的问题。

对我来说,原因是相同的迁移已经在数据库中运行,但在不同的MigrationID下运行。我有201504302005411_InitialCreate但我的迁移脚本被称为201505041911076_InitialCreate

我通过在数据库中重命名MigrationID来解决该问题,以匹配我的代码中的MigrationID。

我不太清楚我是如何结束这种情况的,但重命名MigrationID意味着应用程序知道脚本已经运行。

+0

它看起来像我遇到了同样的问题。由于我尚未部署第一个版本,是否有任何建议可以给我?我想知道在部署应用程序之前启用迁移是否合理,因此MigrationId表和相应的InitialMigration类具有相同的ID?任何缺点? – peval27 2016-10-10 07:48:14

+0

我知道这有点旧,但我面临同样的问题。我成功创建了migrationId'201708250106326_InitialCreate'。但我不知道如何在尝试执行其他迁移后重命名为“201802011731015_InitialCreate”。更糟的是,该框架试图重新执行所有的迁移。你有没有设法找到你的问题的原因? – jvretamero 2018-02-21 00:24:07

0

如果您的上下文是我的:添加了一个新的实体类,但是,当我尝试迁移时显示此错误,请尝试从数据库上下文中删除该对象,然后运行update-database并再次添加该对象并重新运行更新 - 数据库

例如:

public DbSet<CustomizedEmail> CustomizedEmail { get; set; } 
public DbSet<KeyWordsForEmail> KeyWordsForEmail { get; set; } 
public DbSet<Notice> Notice { get; set; }//remove it>run update-database> 
//add again the above entity and rerurn update-database 

这个作品你是否有数据与否。在这个过程中你会丢失该表中的数据。