2014-02-11 64 views
0

我似乎使用启用迁移和更新数据库的基本功能出现问题。在将其复制到不同的PC之前,我已经有了已经启用的项目。ASP.NET MVC 4和EF5:如何使用启用迁移/更新数据库

正在使用VS 2010 Ultimate,SQL Server 2008 R2 Express,MVC 4和EF5。

在我的配置I类有:

public Configuration() 
{ 
    AutomaticMigrationsEnabled = true; 
} 

protected override void Seed(RecruitDB.ModelContext.RecruitModelContext context) 
{ 
    context.Statuses.AddOrUpdate(
     s => s.ProgressStatus, 
     new Status { ProgressStatus = "Interview Arranged" }, 
     new Status { ProgressStatus = "Candidate Rejected" }, 
     new Status { ProgressStatus = "Candidate Accepted" }, 
     new Status { ProgressStatus = "Job Offer Made" }, 
     new Status { ProgressStatus = "Job Offer Accepted" }, 
     new Status { ProgressStatus = "Job Offer Declined" } 
     ); 
    // etc 

在我的web.config,我有EF设置为指向数据库的招聘。

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
</entityFramework> 
<connectionStrings> 
    <add name="RecruitModelContext" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Initial Catalog=Recruitment;Integrated Security=True;MultipleActiveResultSets=true" /> 
</connectionStrings> 

为什么我的数据库是通过名称RecruitDB.ModelContext.RecruitModelContext创建的?

有什么方法可以阻止这种情况发生?

我尝试使用Enable-Migrations -Force进行重置,并在覆盖后重写我的配置文件。

有时我会得到正确命名的招聘数据库,并开始使用该应用程序。随后,我无法运行Seed方法。我最终不得不删除数据库并重新开始。

回答

2

我假设您使用EF Code First?

EF似乎默认为“按惯例代码优先连接”,这解释了为什么DbContext的完全限定名称被用作数据库名称。 (了解更多关于此这里:http://msdn.microsoft.com/en-us/data/jj592674

首先尝试连接字符串的名称设置为的DbContext类,即“RecruitDB.ModelContext.RecruitModelContext”的全名。

如果失败,请尝试以下步骤:

  1. 删除数据库RecruitDB.ModelContext.RecruitModelContext
  2. 删除的文件夹迁移所有迁移(删除整个文件夹迁移)
  3. 运行Enable-Migrations命令
  4. 使用指定的ConnectionStringName参数运行Add-Migration命令
  5. 运行Update-Database命令

下面是一个很好的EF迁移命令参考: http://coding.abel.nu/2012/03/ef-migrations-command-reference/#Enable-Migrations

+1

欣赏职位。连接字符串的简单重命名并不像以前那样停止创建数据库。然后,当我运行应用程序时,它创建了一个名为Recruitment的不同数据库。所以遵循你的建议,删除数据库,然后按照步骤1-4。这与在步骤2之后添加的启用迁移命令一起工作。 – mikepoole72

相关问题