当我在包管理器控制台中运行enable-migrations时出现错误

时间:2012-11-20 10:39:56

标签: asp.net-mvc entity-framework

我正在创建一个ASP.NET MVC项目...当我输入enable-migrations时,我得到以下的eroors:

More than one context type was found in the assembly 'eManager.Web'.
To enable migrations for eManager.Web.Infrastructure.DepartmentDb, use Enable-Migrations -ContextTypeName eManager.Web.Infrastructure.DepartmentDb.
To enable migrations for eManager.Web.Models.UsersContext, use Enable-Migrations -ContextTypeName eManager.Web.Models.UsersContext.

2 个答案:

答案 0 :(得分:36)

错误消息准确说明了问题是什么以及需要做什么 - 包括需要发出的命令。显然,您的项目中有多个上下文(Web.Infrastructure.DepartmentDb和Web.Models.UsersContext),并且迁移不知道应该启用哪些迁移。您需要指向上下文类型。根据错误消息使用:

Enable-Migrations -ContextTypeName eManager.Web.Infrastructure.DepartmentDb.

启用eManager.Web.Infrastructure.DepartmentDb或

的迁移
Enable-Migrations -ContextTypeName eManager.Web.Models.UsersContext.

启用eManager.Web.Models.UsersContext的迁移

答案 1 :(得分:1)

对于那些可能希望保留在项目中的单个上下文的人。在这种情况下,它将是DepartmentDb上下文。

将以下代码移到DepartmentDb上下文中:



public DepartmentDb() 
: base("DefaultConnection")
{

}

public DbSet<UserProfile> UserProfiles { get; set; }
&#13;
&#13;
&#13;

下一步:访问您的AccountModels.cs并删除/注释掉UsersContext类。 您将获得构建错误 - 因此将DepartmentContext引用替换为DepartmentDb。

再次构建,它应该会成功。

现在转到程序包管理器控制台并运行PM&gt;启用的迁移

您应该为项目eManager.Web启用&#34;代码优先迁移。&#34;