我有一个 .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
找到
有什么建议吗?
您似乎正在尝试从包含 API 项目的文件夹运行,请尝试指定 目标项目:
--project <PROJECT>
目标项目的项目文件夹的相对路径。默认值为当前文件夹。-p
dotnet ef migrations add InitialCreate -p ../project.data
我想我在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
这是一个完整的解决方案。
首先:如果您要在其中创建迁移的项目不是定义 dbcontext 的项目,则需要在将 dbcontext 添加到服务时指定它。例如:
builder.Services.AddDbContext<MyDbContext>((provider, options) =>
{
...
ServerVersion.AutoDetect(dbOptions.Value.BusinessConnectionString),
b => b.MigrationsAssembly("MyAssembly"));
...
});
第二:如果上述解决方案不起作用,请确保您已在运行迁移的项目中安装了 Microsoft.EntityFrameworkCore.Design。
第三:如果仍然有这个问题,那么,打开包管理器控制台, 在 VS 中,选择适当的项目,然后运行以下命令:Add-Migration init 此命令将创建您的迁移或告诉您项目出了什么问题。