【问题标题】:Migration not working迁移不起作用
【发布时间】:2023-03-14 04:09:01
【问题描述】:

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

我无法进行迁移。当我尝试Add-Migration InitialCreate 时,出现以下错误:

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

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

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

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

【问题讨论】:

  • 您是否尝试添加IDesignTimeDbContextFactory 的实现?
  • 我确实做到了。但是由于您的评论,我再次查看它并发现了一个错误......它现在正在工作!谢谢。
  • 我知道这是一篇旧帖子,但您的解决方案是什么?我遇到了同样的问题,我相信其他人知道它也会很有用

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    这些允许您指定解决方案配置的启动项目和包管理器/控制台中当前选择的项目的替代方案

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

    所以命令看起来像:

    Add-Migration InitialCreate -StartupProject MyProjectName -Project MyProjectName
    

    【讨论】:

      【解决方案3】:

      另一个原因:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-09-08
        • 2017-06-18
        • 1970-01-01
        • 2017-09-04
        • 2014-09-18
        相关资源
        最近更新 更多