在包管理器控制台中运行启用迁移时出现错误



我正在做一个 ASP.NET 的MVC项目...当我键入启用迁移时,我得到以下 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.

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

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

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

public DepartmentDb() 
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }

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

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

现在转到包管理器控制台并运行 PM>启用迁移

您应该获得"为 project eManager.Web 启用代码优先迁移"。

最新更新