You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向.NET Standard类库添加Entity Framework遇到的问题

解决.NET Standard 2.0类库中EF Core脚手架命令报错的问题

我来帮你搞定这个坑!这个错误本质是因为.NET Standard只是一个跨平台的API规范,它没有自己独立的运行时环境,EF Core的Package Manager Console工具没办法直接在纯.NET Standard项目上执行脚手架生成命令。下面给你两种实用的解决思路,按需选择就行:

方法一:新增一个可执行项目作为启动项目(最常用)

这是官方推荐的方案,操作起来也简单:

  • 打开你的解决方案,右键解决方案 -> 添加 -> 新建项目,选一个控制台应用(推荐.NET 6/7/8,和.NET Standard 2.0完美兼容)。
  • 在新建的控制台项目上右键 -> 添加 -> 项目引用,勾选你的.NET Standard类库FlexData,确定。
  • 在解决方案资源管理器里,右键这个控制台项目,选择设为启动项目。
  • 回到NuGet包管理器控制台,确认顶部的默认项目选择的是FlexData,然后重新执行你的脚手架命令(顺便提一句:你的连接字符串里同时写了账号密码和Trusted_Connection=True,MySQL一般用账号密码验证,建议删掉Trusted_Connection=True避免冲突):
    Scaffold-DbContext "Server=localhost;Database=FlexDB;uid=root;pwd=ffff;" MySql.Data.EntityFrameworkCore -OutputDir EFModels/DB
    

方法二:让类库跨目标到带运行时的框架(无需额外项目)

如果不想多一个项目,也可以修改类库的项目文件,让它同时支持.NET Standard 2.0和一个有独立运行时的框架:

  • 右键FlexData项目 -> 编辑项目文件。
  • 找到原来的<TargetFramework>netstandard2.0</TargetFramework>,把它改成多目标格式,比如添加.NET 6:
    <TargetFrameworks>netstandard2.0;net6.0</TargetFrameworks>
    
  • 保存文件,等待项目重新加载完成。
  • 现在直接回到包管理器控制台执行脚手架命令就行,工具会自动用跨目标里的.NET 6运行时来执行操作。

小提示

不管用哪种方法,都要确保你安装的MySql.Data.EntityFrameworkCore包版本和你的目标框架兼容,比如.NET Standard 2.0对应的MySQL EF Core包至少要3.1及以上版本哦。

内容的提问来源于stack exchange,提问作者coolblue2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:13:15