我在 ASP.NET Core 8 中创建了两个项目:
1. Web API 项目包含
appsettings.json
DbContext
注册以及 Program.cs
文件中的连接字符串2. 类库项目包含:
我已在startupConfiguration中将这两个项目设置为启动。 Web API 项目有对类库项目的引用。
我正在类库项目中运行
add-migration mgnName
命令。
我收到错误:
无法创建类型为“”的“DbContext”。异常“找不到配置文件‘appsettings.json’并且不是可选的”。预期的物理路径是 'K:.NET CORe\FinalWebProject\FinalWebProject.Data ppsettings.json'。'尝试创建实例时抛出。有关设计时支持的不同模式,请参阅 https://go.microsoft.com/fwlink/?linkid=851728
我还完成了设计时数据库创建,但错误不会消失。
如果有人可以的话请帮助我!
我没有在我这边重现你的问题。请比较你的代码和我的代码并尝试一下。
首先,我在VS中创建了一个新的.net 8 Web api项目,就像你提到的那样。我在 appsettings.json 中添加了连接字符串。
"ConnectionStrings": {
"DefaultConnection": "xx"
},
并在Program.cs中添加了DbContext注册
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
您在问题中没有提到的是有关 nuget 软件包的内容。这是我在 Web api 项目中添加的内容。
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
然后我创建了 ClassLibrary 项目。在这个项目中,我创建了 Data 文件夹和 Models 文件夹。我的
ApplicationDbContext
如下所示。
namespace ClassLibrary1.Data
{
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<MovieRelease> MovieRel { get; set; }
}
}
这是我的模特
namespace ClassLibrary1.Models
{
public class MovieRelease
{
[Key]
public int ReleaseId { get; set; }
public int ReleaseName { get; set; }
}
}
并且它需要 nuget 包:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
这是我的项目结构和我的测试结果。