首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法解析Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger类型的服务

无法解析Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger类型的服务
EN

Stack Overflow用户
提问于 2021-12-04 10:45:30
回答 8查看 10.2K关注 0票数 8

我很难用EF核心搭建一个现有的MySQL数据库。我添加了甲骨文中提到的所需的依赖项。

代码语言:javascript
复制
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkcore.Tools" Version="6.0.0">

然后,我在包管理器控制台中运行了以下代码:

代码语言:javascript
复制
Scaffold-Dbcontext "server=the.server.ip.address;user=user_name;database=db_name;password=db_password;port=3306" MySql.EntityFrameworkCore -o Data -v

它显示了这个错误:

在尝试激活'Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1Microsoft.EntityFrameworkCore.DbLoggerCategory+Scaffolding‘时无法解析'MySql.EntityFrameworkCore.Scaffolding.Internal.MySQLDatabaseModelFactory’类型的服务

以下是输出窗口中的相关日志:

代码语言:javascript
复制
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工作台访问和运行数据库上的查询。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2021-12-12 10:11:28

我遇到了同样的问题,试图搭建一个现有的MySQL数据库。看起来MySql.EntityFrameworkCore的最新版本(6.0.0-preview3.1)仍然使用EFCore 5.0库,而且还没有更新到EFCore 6.0。

似乎Microsoft.EntityFrameworkCore.Diagnostics上一次是在EFCore 5中实现的,并且是在6中删除的。

当我将所有包降级到5版本级别时,我能够在没有错误的情况下运行支架命令。

票数 6
EN

Stack Overflow用户

发布于 2022-02-06 19:25:58

我得到的错误不是脚手架,而是当我试图创建我的第一次迁移。我不想降级到5.0,因为它必须是永久性的,因为我要运行很多迁移。

我通过将提供程序从MySql.Data.EntityFrameworkCore更改为Pomelo.EntityFrameworkCore.MySql来修复它。

  1. 从my和DAL项目中删除旧的提供程序: dotnet remove package MySql.EntityFrameworkCore
  2. 添加Pomelo提供者 dotnet add package Pomelo.EntityFrameworkCore.MySql
  3. 更新您的启动,以使用柚子吐露: https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql#2-services-configuration
  4. 移徙正在发挥作用: dotnet ef migrations add InitialCreate
票数 12
EN

Stack Overflow用户

发布于 2022-09-15 10:23:02

根据这个描述,https://bugs.mysql.com/bug.php?id=106592

可以通过将下面的类添加到代码中来解决此错误。

代码语言:javascript
复制
public class MysqlEntityFrameworkDesignTimeServices : IDesignTimeServices
{
    public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
    {
        serviceCollection.AddEntityFrameworkMySQL();
        new EntityFrameworkRelationalDesignServicesBuilder(serviceCollection)
            .TryAddCoreServices();
    }
}

定义之后,您必须在启动文件中将它添加为服务,如下所示

代码语言:javascript
复制
services.AddSingleton<IDesignTimeServices, MysqlEntityFrameworkDesignTimeServices>();

在这些步骤之后,您可以迁移代码:)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70224907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档