【问题标题】:EF Core : migration failed, prompting that there is no TOOLS packageEF Core:迁移失败,提示没有TOOLS包
【发布时间】:2022-02-14 13:13:02
【问题描述】:
在我的 ASP.NET Core 3.1 项目中,我使用 EF Core 进行代码迁移。但是当我使用add-migration MyProject命令操作的时候,却报错了。
您的启动项目“MyProject”未引用 Microsoft.EntityFrameworkCore.Design。此包是 Entity Framework Core Tools 工作所必需的。确保您的启动项目正确,安装包,然后重试。
但是我确定我下载了Entity Framework Core Tools包,希望你能给我一些建议,谢谢。
【问题讨论】:
标签:
asp.net-core
entity-framework-core
【解决方案1】:
你能展示你所有的 EFCORE 依赖项吗?
我这里有一个迁移成功的案例,可以参考:
型号:
public class TestModel
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string pwd { get; set; }
}
数据库上下文:
public class TestContext: DbContext
{
public TestContext(DbContextOptions<TestContext> options) : base(options) { }
public DbSet<TestModel> Users { get; set; }
}
appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "your db"
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TestContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllersWithViews();
}
这里是需要的依赖:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.14">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.14">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
迁移: