我有一个web表单项目(项目A(,它引用了我用于数据访问层的另一个类库项目(项目B(,我制作了另一个库(Helper项目C(当我想在DAL项目上运行"添加迁移"等命令时,我会将此Helper项目作为启动项目,因为如果我在运行EFCore命令时将项目A或B作为启动项目会出错。
它运行良好,我能够添加迁移&更新数据库,但当我想添加添加迁移时,突然出现了一个错误,错误显示:
您的启动项目"XXX"。Helper"未引用Microsoft。EntityFrameworkCore。设计此程序包是实体框架核心工具工作所必需的。确保您的启动项目是正确的,安装程序包,然后重试
项目B&C正在使用。NETFramework 4.7.2,项目A是。NETFramework 4.5&后来我把它改成了。NETFramework 4.7.2。我使用的是EntityFramework v3.1.15
我该如何解决此问题?
如果您使用的是NET framework 4.7.2,您的实体框架版本不应该是EF6而不是EntityFramework Core吗?因为EF的当前版本V3.1是为EF Core设计的EF Core。
虽然在NET框架中使用某些NET核心库并非不可能,但兼容性可能存在各种问题。
无论如何,您的项目很可能缺少EF Core设计库的参考:https://learn.microsoft.com/pt-br/ef/core/cli/services
您可以访问您的项目csproj文件,并将以下内容添加到PackageReferences的其余部分:
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.11">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
为我工作,包括在您的csproj:上
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
重建。
建议者:https://stackoverflow.com/a/58185466/5790169
看起来您也安装了EFCore,可能安装在解决方案的另一个项目中。
如果是这种情况,那么您应该明确指定要使用EFFramework迁移命令,而不是这些命令的EFCore版本
EntityFramework6Update-Database
或
EntityFramework6Add-Migration