在程序集“project.api”中找不到 DbContext

问题描述 投票:0回答:3

我有一个 .net core 项目,其中有多个项目

project.api
project.data

我的 DbContext 文件位于

project.data -> Context

当我跑步时。

dotnet ef migrations add InitialCreate -o ../project.data
我不断收到以下错误 在程序集“project.api”中找不到 DbContext。确保您使用正确的程序集并且类型既不是抽象的也不是泛型的。

我尝试添加-c

dotnet ef migrations add InitialCreate -o ../project.data --context ../project.data.Context.DatabaseContext

我发现 DbContext 无法在

project.data.Context.DatabaseContext

找到

有什么建议吗?

c# .net entity-framework asp.net-core
3个回答
0
投票

您似乎正在尝试从包含 API 项目的文件夹运行,请尝试指定 目标项目

--project <PROJECT>
-p
目标项目的项目文件夹的相对路径。默认值为当前文件夹。

dotnet ef migrations add InitialCreate -p ../project.data

0
投票

我想我在program.cs之后添加了DbContext

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

假设是之前,我使用了 api 目录中的以下命令

dotnet ef migrations add IntialCreate -p ../project-data/project-data.csproj

0
投票

这是一个完整的解决方案。

首先:如果您要在其中创建迁移的项目不是定义 dbcontext 的项目,则需要在将 dbcontext 添加到服务时指定它。例如:

 builder.Services.AddDbContext<MyDbContext>((provider, options) =>
    {
         ...

      ServerVersion.AutoDetect(dbOptions.Value.BusinessConnectionString), 
            b => b.MigrationsAssembly("MyAssembly"));

        ...
    });

第二:如果上述解决方案不起作用,请确保您已在运行迁移的项目中安装了 Microsoft.EntityFrameworkCore.Design

第三:如果仍然有这个问题,那么,打开包管理器控制台, 在 VS 中,选择适当的项目,然后运行以下命令:

Add-Migration init 此命令将创建您的迁移或告诉您项目出了什么问题。

© www.soinside.com 2019 - 2024. All rights reserved.