我在网上做了很多研究,但没有找到合适的解决办法。我尝试使用entity framework core和mysql,使用database first scaffold方法Map表模型,但在应用命令时总是收到此错误
Unable to retrieve project metadata. Ensure it's an MSBuild-based .NET Core project. If you're using custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, Use the --msbuildprojectextensionspath option.
这是我用来构建数据库模型的命令:
Scaffold-DbContext "server=localhost;port=3306;user=root;password=1234;database=world" "Pomelo.EntityFrameworkCore.MySql" -OutputDir .\Models -f
这是我的.net核心项目设置:
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.1" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
</ItemGroup>
7条答案
按热度按时间zzoitvuj1#
这是这个问题的最终解决办法。
我与rider ide一起使用net core 3和pomelo.mysql构建web api
我有树层来定义我的应用程序:
test.domain-定义模型的类库test.infra.dataaccess-定义dbcontext test.service.restapi的类库-net core api项目,我在启动文件中定义appcontext。这样地:
这很正常,魔法发生在这里:
启动迁移:
它将创建迁移
然后用sabe命令结构更新数据库;
dgsult0t2#
我在命令行中添加新的迁移时出错
dotnet ef migrations add NewMigration
.我的解决办法就是
--msbuildprojectextentionspath obj/local
.cx6n0qe33#
对于ef核心3
我认为ef core 3的powershell命令已经消失了,所以我使用
dotnet ef dbcontext scaffold
使用此命令,如果要转换Scaffold-DbContext
编写项目名称(参数)脚本--project
)需要有.csproj
最后-它不能只是一个无扩展名。w51jfk4q4#
将此参数添加到scaffold命令“--msbuildprojectextensionspath”的末尾。
djp7away5#
我尝试了不同的解决方法来解决这个错误。在.csproj文件中做了以下更改。
通过编辑.csproj文件并删除import标记,然后在命令行中再次运行ef命令,解决了.NETcore的此问题。
dgjrabp26#
使用.netcore 2.2的ef迁移可以使用
migrations list
:e5nszbig7#
在我的例子中,通过下载最新的dotnet-sdk-2.2.107-win-x64解决了这个错误
对于vs2017,然后通过cmd删除和更新数据库: