EF 6启用迁移可以';t查找上下文

本文关键字:查找 上下文 启用 迁移 EF | 更新日期: 2023-09-27 18:28:39

我正在尝试在EF 6.1.3-.NET 4.5中设置EF代码优先迁移。

我的解决方案中有多个项目,启动项目是Songbirds.Web。我创建了一个名为Songbirds.Dal.EntityFramework的项目,其中包含我的存储库、数据库上下文和迁移。

我创建了我的上下文类:

namespace Songbirds.Dal.EntityFramework
{
    public class SongbirdsDbContext : IdentityDbContext<ApplicationUser>, IUnitOfWork
    {
        public SongbirdsDbContext()
            : this("name=SongbirdsDBContext")
        {
        }
        ...
    }
}

整个解决方案构建正确,没有任何错误。

我进入项目管理器控制台,将默认项目设置为Songbirds.Dal.EntityFramework,然后运行enable-migrations命令,得到以下错误:

PM> enable-migrations
No context type was found in the assembly 'Songbirds.Dal.EntityFramework'.

我尝试明确指定上下文类型,结果如下:

PM> enable-migrations -ContextTypeName Songbirds.Dal.EntityFramework.SongbirdsDbContext
The context type 'Songbirds.Dal.EntityFramework.SongbirdsDbContext' was not found in the assembly 'Songbirds.Dal.EntityFramework'.

SongbirdsDbContext是Songbirts.Dal.EntityFramework项目的一部分。你知道我做错了什么吗?为什么它没有认识到上下文?

EF 6启用迁移可以';t查找上下文

确保将默认项目设置为具有EF上下文的项目。

我想我通过反复试验找到了答案。我首先将上下文类更改为继承自DbContext类,而不是IdentifyDbContext:

public class SongbirdsDbContext : DbContext

并重新运行enable-migrations命令以发现以下错误:

Could not load file or assembly 'Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

在添加了对所需程序集的适当引用后,我能够成功地启用迁移。我不知道为什么从DbContext继承显示了这个错误,而从IdentityDbContext继承没有。

试着只运行

enable-migrations -ContextTypeName Songbirds.Dal.EntityFramework

在末尾添加.songBirdsContext可能是个问题。

我发现自己的解决方案是,我刚刚创建了一个项目,但还没有构建它。因此,构建我的项目,然后重新运行命令,