迁移不起作用

时间:2018-02-03 22:41:01

标签: sql-server docker .net-core entity-framework-core

我有一个使用.net core 2.0和EntityFrameworkCore,Docker和SQL Server的项目。

我无法让迁移工作。当我尝试Add-Migration InitialCreate时,我收到以下错误:

  

启动项目'docker-compose'是一个Docker项目。选择一个   ASP.NET Core Web Application作为您的启动项目,然后重试。

我甚至没有asp.net Web应用程序,只是一个.net核心控制台程序。如何启用迁移?

如果我将启动项目更改为控制台应用程序,我会得到:

  

无法创建“ApplicationDbContext”类型的对象。添加一个   'IDesignTimeDbContextFactory'的实现   到项目,或参见https://go.microsoft.com/fwlink/?linkid=851728   在设计时支持其他模式。

3 个答案:

答案 0 :(得分:0)

错误Startup project 'docker-compose' is a Docker project. Select an ASP.NET Core Web Application as your startup project and try again.的答案是在Visual Studio中右键单击我的实际代码项目,然后单击“设置为启动项目”。

解决方案文件已将docker-compose项目标记为默认项目。

答案 1 :(得分:0)

Add-Migration具有可选参数-StartupProject-Project

这些选项可让您指定在程序包管理器/控制台中配置的解决方案“启动项目”和当前选定项目的替代方案

如果您要在其中创建迁移的项目实际上不是您的Startup项目,那么使用这些参数意味着您不必在每次要运行迁移时都不断更改解决方案配置。

因此命令如下:

Add-Migration InitialCreate -StartupProject MyProjectName -Project MyProjectName

答案 2 :(得分:0)

另一个原因:

<块引用>

启动项目 'docker-compose' 是一个 Docker 项目。选择一个 ASP.NET Core Web 应用程序作为您的启动项目,然后重试。

也可能是您的上下文缺少预期的构造函数签名。你需要这些:

public SomeContext(DbContextOptions options) : base(options)
{
}

public SomeContext()
{
}