尝试在.Net Standard项目中设置Entity Framework核心

我想知道我是否可以轻松地在.NET Standard 2.0项目中设置我的EntityFrameworkCore。 我正在学习本教程,但它需要.NET Core或Framework。

当我到达这一步时:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models 

我收到了这个错误:

启动项目’projectName’的目标是框架’.NETStandard’。 没有与此框架关联的运行时,并且无法直接执行以其为目标的项目。 要将Entity Framework核心软件包管理器控制台工具与此项目一起使用,请添加一个针对引用此项目的.NET Framework或.NET Core的可执行项目,并将其设置为启动项目; 或者,更新此项目以跨目标.NET Framework或.NET Core。

我想知道我是否可以在.NET Standard中设置我的实体,或者是否有我应该做的最佳实践?

启动项目’projectName’的目标是框架’.NETStandard’。 没有与此框架关联的运行时,并且无法直接执行以其为目标的项目。 要将Entity Framework核心软件包管理器控制台工具与此项目一起使用,请添加一个针对引用此项目的.NET Framework或.NET Core的可执行项目,并将其设置为启动项目; 或者,更新此项目以跨目标.NET Framework或.NET Core。

错误消息意味着:没有可执行的 .NET Standard项目。 它没有运行时,因为它只是一个用于多个不同运行时的类型转发机制。

在编程术语中,它有点像尝试实例化接口 。 你不能这样做,因为没有实现可以运行。

解决方案是为您的应用程序选择一个可执行的平台来运行。 您可以从exectuable中引用任意数量的.NET标准库(只要它们与您的运行时兼容),但是可执行文件本身不能在.NET Standard上运行。 它必须以.NET Framework或.NET Core等平台为目标才能执行。

换句话说,为了使用命令来构建数据库,您必须以运行时为目标。 因此,您需要在定位主可执行项目时运行此命令,或者在解决方案中添加新的可执行项目以运行它。

这是第一个答案。 我其实也想这样做。 我得到了Scaffolding但Net Standard似乎没有为表属性加载Extensions。

确保为EF安装EntityFrameworkCore.Tools包。 您只需要4.6.1支持,这是默认支持。 如果我弄清楚如何修复扩展问题,我会在这里发布。

这两个是必需的。 安装包Microsoft.EntityFrameworkCore.SqlServer安装包Microsoft.EntityFrameworkCore.Tools