【发布时间】:2022-01-21 17:21:06
【问题描述】:
我正在使用 EF Core 开发一个测试 Web 项目。使用 DbContext 运行测试时遇到以下问题。
以下是我的开发环境信息:
- ASP.NET Core 3.1
- 实体框架核心 3.1
- IDE:Visual Studio 2019
- 平台:Windows 10 电脑
主项目名称OdeToFood 和一个类库项目OdeToFood.Data 用于使用Entity Framework Core 进行数据访问。运行以下命令时收到以下错误消息:
C:\Projects\OdeToFood\OdeToFood.Data>dotnet ef dbcontext info -s ..\odetofood\odetofood.csproj
构建开始...
构建成功。无法创建“OdeToFoodDbContext”类型的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728
到目前为止,我还没有找到解决这个问题的方法。任何帮助或建议将不胜感激。以下部分是相关的代码段和配置设置。
-
在 odetofood 项目属性中,启动项目已设置为 OdeToFood
-
OdtToFood.csproj 文件内容:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<StartupObject>OdeToFood.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OdeToFood.Data\OdeToFood.Data.csproj" />
</ItemGroup>
</Project>
- 在 OdeToFood.data 项目中,DbContext 定义如下:
namespace OdeToFood.Data
{
public class OdeToFoodDbContext: DbContext
{
public OdeToFoodDbContext(DbContextOptions<OdeToFoodDbContext> options)
: base(options)
{
}
public DbSet<Restaurant> Restaurats { get; set; }
}
}
- 在主项目
OdeToFood下的appsettings.json中,输入DbConnection字符串如下:
"ConnectionStrings": {
"OdeToFoodDb": "Server=DESKTOP-E7P6N4O; Database=OdeToFoodDb; user id=OdeToFoodDbUser; password=xxxxxx; Encrypt=false"
}
- 在 Startup.cs 中,为
DbContext添加服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContextPool<OdeToFoodDbContext>(options => {
options.UseSqlServer(Configuration.GetConnectionString("OdeToFoodDb"));
});
services.AddSingleton <IRestaurantData, InMemoryRestauantData>();
services.AddRazorPages();
}
【问题讨论】:
-
当你说你正在使用
3.1时,为什么你的项目文件中有:Version="2.2.0"? -
@Poul Bak:抱歉,我发错了。
标签: c# asp.net-core web entity-framework-core dbcontext