繁体   English   中英

如何在通过 PMC for mysql 添加 ef 核心迁移时修复错误?

[英]How to fix error when adding an ef core migration through the PMC for mysql?

我想从使用 SQL Server 切换到 MySql。 我已经为 SQL Server 创建了迁移并将它们应用于数据库。 我已经添加了 Pomelo Mysql 包,现在想要为 MySql 数据库创建迁移。 我的问题是我在尝试使用 add-migration 命令时在包管理器控制台中收到错误。

  • 这是一个 .Net Core 2.2 项目
  • Pomelo.EntityFrameworkCore.MySql 2.2.0 已添加到项目中

启动/配置服务

services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection"), 
                mySqlOptions => { mySqlOptions.ServerVersion(new Version(8, 0, 16), ServerType.MySql); }));

项目

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.2.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4" PrivateAssets="All" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" PrivateAssets="All" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.2.0" />
  </ItemGroup>

ApplicationDbContext 类

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMySql("Server=localhost;Database=myDbUid=myUserId;");
}

尝试添加迁移时收到以下错误。 “已添加具有相同密钥的项目。密钥:Pomelo.EntityFrameworkCore.MySql.Infrastructure.Internal.MySqlOptionsExtension” 此错误与我之前为 MS SQL Server 进行过迁移有关吗? 任何帮助将非常感激。

我遇到了同样的问题。 对我来说,答案是从我的 Context 类中删除OnConfiguring()方法。

我有两个项目 - 一个包含数据库代码和迁移,另一个是用于查看数据的 ASP.NET Core Web 项目。

我的 Web 项目的 Startup.cs 中有以下内容:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddDbContext<EFCoreExampleContext>(o => o.UseMySql("server=etc..."));
}

在我的数据库项目中,我在 DbContext 派生类中有这个:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMySql("server=etc...");
}

即使我使用的是Update-Database -Project MyDbProj ,它也使用了另一个项目中的连接字符串。 如果我从 Startup.cs 中删除AddDbContext行,我只会收到一个不同的错误。 删除OnConfiguring方法是让它工作的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM