13

我正在制作一个 ASP.NET MVC 项目......当我输入 enable-migrations 我得到以下错误:

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.
4

2 回答 2

39

错误消息准确地说明了问题所在以及需要做什么——包括需要发出的命令。显然,您的项目中存在多个上下文(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 启用迁移

于 2012-11-20T17:48:36.017 回答
1

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

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

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

}

public DbSet<UserProfile> UserProfiles { get; set; }

下一步:访问您的 AccountModels.cs 并删除/注释掉 UsersContext 类。你会得到构建错误 - 所以用 DepartmentDb 替换 UsersContext 引用。

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

现在转到包管理器控制台并运行 PM> enable-migrations

您应该获得“为项目 eManager.Web 启用代码优先迁移”。

于 2015-02-17T21:13:27.130 回答