在MySQL的PMC添加EF核心迁移时,如何修复错误



我想从使用SQL Server切换到MySQL。我已经为SQL Server创建了迁移,并将其应用于DB。我添加了Pomelo MySQL软件包,现在想为MySQL DB创建迁移。我的问题是,在尝试使用Add Mogration命令时,我会在软件包管理器控制台中收到错误。

  • 是A.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); }));

csproj

  <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的迁移有任何关系吗?任何帮助将不胜感激。

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

我有两个项目 - 一个包含DB代码和迁移的项目,另一个是ASP.NET核心Web项目以查看数据。

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

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方法是使其工作的唯一方法。

相关内容

  • 没有找到相关文章

最新更新