我很难用EF核心搭建一个现有的MySQL数据库。我添加了甲骨文中提到的所需的依赖项。
<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它显示了这个错误:
在尝试激活'Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1Microsoft.EntityFrameworkCore.DbLoggerCategory+Scaffolding‘时无法解析'MySql.EntityFrameworkCore.Scaffolding.Internal.MySQLDatabaseModelFactory’类型的服务
以下是输出窗口中的相关日志:
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工作台访问和运行数据库上的查询。
发布于 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版本级别时,我能够在没有错误的情况下运行支架命令。
发布于 2022-02-06 19:25:58
我得到的错误不是脚手架,而是当我试图创建我的第一次迁移。我不想降级到5.0,因为它必须是永久性的,因为我要运行很多迁移。
我通过将提供程序从MySql.Data.EntityFrameworkCore更改为Pomelo.EntityFrameworkCore.MySql来修复它。
dotnet remove package MySql.EntityFrameworkCoredotnet add package Pomelo.EntityFrameworkCore.MySqldotnet ef migrations add InitialCreate发布于 2022-09-15 10:23:02
根据这个描述,https://bugs.mysql.com/bug.php?id=106592
可以通过将下面的类添加到代码中来解决此错误。
public class MysqlEntityFrameworkDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
{
serviceCollection.AddEntityFrameworkMySQL();
new EntityFrameworkRelationalDesignServicesBuilder(serviceCollection)
.TryAddCoreServices();
}
}定义之后,您必须在启动文件中将它添加为服务,如下所示
services.AddSingleton<IDesignTimeServices, MysqlEntityFrameworkDesignTimeServices>();在这些步骤之后,您可以迁移代码:)
https://stackoverflow.com/questions/70224907
复制相似问题