问题:无法解析 Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger 类型的服务
我在使用 EF 核心构建现有 MySQL 数据库时遇到困难。我已经添加了oracle doc中提到的所需依赖项:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkcore.Tools" Version="6.0.0">
然后,我在包管理器控制台中运行了这段代码:
Scaffold-Dbcontext "server=the.server.ip.address;user=user_name;database=db_name;password=db_password;port=3306" MySql.EntityFrameworkCore -o Data -v
它显示了这个错误:
尝试激活“MySql.EntityFrameworkCore.Scaffolding.Internal.MySQLDatabaseModelFactory”时无法解析类型“Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Scaffolding]”的服务
以下是输出窗口中的相关日志:
Finding design-time services referenced by assembly 'Test2'... Finding design-time services referenced by assembly 'Test2'... No referenced design-time services were found. Finding design-time services for provider 'MySql.EntityFrameworkCore'... Using design-time services from provider 'MySql.EntityFrameworkCore'. Finding IDesignTimeServices implementations in assembly 'Test2'... No design-time services were found.
我不知道如何实现设计时类,也没有在网络上找到任何有用的链接。
请注意,我可以使用 MySQL Workbench 访问和运行数据库查询。
解答
我在尝试搭建现有 MySQL 数据库时遇到了同样的问题。看起来最新版本的 MySql.EntityFrameworkCore (6.0.0-preview3.1) 仍然使用 EFCore 5.0 库,并且尚未更新到 EFCore 6.0。
似乎Microsoft.EntityFrameworkCore.Diagnostics最后在 EFCore 5 中实现并在 6 中删除。
当我将所有包降级到 5 版本级别时,我能够运行脚手架命令而不会出现该错误。