c# - 通过 PMC for mysql 添加 ef 核心迁移时如何修复错误?
问题描述
我想从使用 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); }));
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 的事实有关?任何帮助将非常感激。
解决方案
我遇到了同样的问题。对我来说,答案是从我的 Context 类中删除该方法。OnConfiguring()
我有两个项目——一个包含 DB 代码和迁移,另一个是用于查看数据的 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
,它也在使用另一个项目中的连接字符串。如果我AddDbContext
从 Startup.cs 中删除该行,我就会得到一个不同的错误。删除该OnConfiguring
方法是使其工作的唯一方法。
推荐阅读
- java - 将一个 API 的 requestbody 发送到另一个 API
- ant - 将 .class 添加到 ant 构建类路径
- c - 我可以重新分配()一个未分配的指针吗?
- python - AttributeError:“布尔”对象没有属性“_formatMessage”
- node.js - 在 NestJs 上为单个控制器设置请求正文大小限制
- google-cloud-storage - gsutil:为什么 ls 返回目录本身
- reactjs - Material UI - 扩展面板必须向上扩展,位于页脚中,这样用户就不需要向下滚动
- c - 在 C 中将数据分成块的有效方法是什么?
- python - mysql-connector-c 升级后安装 MySQL-python 包时出错
- javascript - 如何将此 Formik 代码转换为 Typescript 无错误代码