我的解决方案中有2个项目,有一个安装了Entity Framework Core的项目:
在另一个ASP.NET Web API项目中,我具有以下软件包:
sudo cp ~/Downloads/swt.jar
plugins/org.eclipse.swt.cocoa.macosx.x86_64_3.103.1.v20140903-1947.jar
当我在PMC中运行jmc
时:
您的启动项目“ API”未引用 Microsoft.EntityFrameworkCore.Design。该软件包是 实体框架核心工具正常工作。确保您的启动项目是 正确,安装软件包,然后重试。
我在启动项目中安装了Microsoft.EntityFrameworkCore.Design,而不是在包含所有实体的数据项目中安装了它,现在它可以工作了,这是应该如何设置项目的?
答案 0 :(得分:17)
请确保您已安装以下软件包。 我也遇到同样的错误,并安装在软件包下面,对我有用。
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
答案 1 :(得分:16)
没有一个选项对我有用。但是我尝试过的一个方法起作用了: EF Core 3 design time migrations broken by Microsoft.EntityFrameworkCore.Design DevelopmentDependency
在将包导入到Data项目之后,我刚刚注释了以下内容:
<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<!--<PrivateAssets>all</PrivateAssets>-->
</PackageReference>
非常感谢Microsoft,每次发布新的.NetCore更新时都会破坏现有项目!
答案 2 :(得分:14)
“您的'项目名称'不涉及您的启动项目Microsoft.EntityFrameworkCore.Design。此包对于Entity Framework Core Tools起作用是必需的。请确保您的启动项目正确,安装该包,然后重试。 “
如果遇到此错误,请在项目中尝试“构建>清洁解决方案” ,然后再次尝试运行命令。
这在我的项目中起作用。或者,您可能想看看documentation。
我在项目中使用.Net Core 3.1版本。
答案 3 :(得分:4)
我在这里找到了解决方法:http://obscureproblemsandgotchas.com/development/c/dotnet-core-ef-migration-not-working/
简而言之,编辑您的csproj文件,然后将其添加到您的PropertyGroup
部分,如下所示:
<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
答案 4 :(得分:3)
在拥有单独的数据项目的同时,绝对没有理由将 Microsoft.EntityFrameworkCore.Design 安装到您的 API 项目中。
使用 add-migration 时,只需添加一个参数以将 -StartUpProject 设置为您的数据项目(默认情况下,我假设您的启动项目是 API 项目)。
示例添加迁移命令如下:
add-migration {migration_name} -StartUpProject {your_data_proj_name} -project {your_data_proj_name} -v
示例更新数据库命令如下:
update-database -StartUpProject {your_data_proj_name} -project {your_data_proj_name} -v
希望对大家有帮助
PS:可以找到有关添加迁移参数的更多信息here
答案 5 :(得分:3)
您可以使用以下命令解决此问题
dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore.Design
答案 6 :(得分:2)
当我删除 .csproj 或
中的私人资产时,它对我有用不将私有资产财产全部通过包裹的财产
答案 7 :(得分:2)
我收到此错误是因为Visual Studio默认将实体框架核心而不是.NET Framework的老式实体框架用于实体框架6。这是我的解决方案:
EntityFramework\Update-Database
或明确引用版本:
EntityFramework6\Update-Database
在程序包管理器控制台中,还值得检查正确的项目。那样喜欢一半时间潜回其他项目!
答案 8 :(得分:1)
我在解决方案中有多个项目时遇到了同样的问题。我正在犯的错误是我没有选择相关项目作为
程序包管理器控制台中的默认项目
。 因此,请检查您是否在Package Manager控制台中选择了要运行迁移命令的默认项目。
答案 9 :(得分:1)
请确保您安装了以下软件包的相同版本:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Design
我也遇到了同样的错误,并重新安装了相同版本的软件包,它对我有用。
答案 10 :(得分:1)
当
实体框架核心和实体框架6都是 已安装。实体框架核心工具正在运行。采用 实体框架6的“ EntityFramework6 \ Add-Migration”。
解决方案为EntityFrameworkCore\Add-Migration
答案 11 :(得分:1)
为了使迁移工具正常工作,我还必须添加Microsoft.VisualStudio.Web.CodeGeneration.Design
NuGet软件包。
答案 12 :(得分:0)
您有多个项目吗?如果是,则必须从Solution Explorer将宿主项目作为启动项目,并将该项目设置为PMC中的默认项目(该项目具有DBContext)。然后运行Add-Migration
命令。
答案 13 :(得分:0)
与其说是解决方案,不如说是解决方法,我最终从解决方案中卸载了启动项目。运行迁移,将项目添加回解决方案。我不希望有很多迁移,所以它对我有用。让我感到困惑的是,我有一个具有类似功能的解决方案,但我没有遇到同样的问题。
答案 14 :(得分:0)
将具有实体的项目设置为“启动”项目,然后运行脚手架命令。它为我工作。不要忘了设置之后还原启动项目。
答案 15 :(得分:0)
首先安装“microsoft.entityframeworkcore.design”最好使用 Package Manager Console
中的 nuget 安装它,命令是:Install-Package Microsoft.EntityFrameworkCore.Design -Version x.x.x
nuget 包的链接是 this link
然后在安装所需的DLL后重建解决方案,之后可能需要安装其他依赖项,但至少您将完成“microsoft.entityframeworkcore.design”依赖项
答案 16 :(得分:0)
对于安装 EF Core Design 时遇到此问题的任何人,我只需卸载并重新加载项目即可解决问题。
在解决方案资源管理器中右键单击该项目,卸载该项目,然后再次右键单击以重新加载。
现在它应该可以识别 Entity Framework Core Design。
答案 17 :(得分:0)
如果要进行迁移而不在服务中添加EF引用,则具有数据访问权限的库需要一种构造DbContext实例的方法。您可以通过实现IDesignTimeDbContextFactory来实现此目的,例如:
public class MyContextFactory : IDesignTimeDbContextFactory<MyContext>
{
public MyContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<MyContext>();
optionsBuilder.UseSqlServer("Data Source=MyDatabase");
return new MyContext(optionsBuilder.Options);
}
}
答案 18 :(得分:0)
当我删除 .csproj 应用程序中的 PrivateAssets 时它对我有用
答案 19 :(得分:0)
为我解决的是使用相同版本的 Microsoft.EntityFrameworkCore.Design
和 Microsoft.EntityFrameworkCore.SqlServer packages
,在我的情况下是 2.1.14
编辑1:这是使用
解决的<Project Sdk="Microsoft.NET.Sdk.Web">
开
<TargetFramework>net5.0</TargetFramework>
答案 20 :(得分:0)
出现此错误的另一个原因(即使您更改了 PrivateAssets) - 如果您的启动项目未引用到数据访问项目。因此,如果您刚刚创建了新项目,则可能是这种情况
答案 21 :(得分:0)
尝试将您的Web项目再次设置为启动项目,此警告应消失。 (右键单击Web项目>设置为启动项目)