MySql.Data.EntityFrameworkCore
和Microsoft.EntityFrameworkCore
在Visual Studio 2019的.NET Core 3.1上首先生成一个MySql数据库代码。然而,我一直收到以下错误信息:我查看了GitHub上EF Core的源代码,但找不到与该签名匹配的方法 - 我是否漏掉了什么?Method not found: 'Void Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping..ctor(System.String, System.Type, System.Nullable
1<System.Data.DbType>, Boolean, System.Nullable
1)'。
我的脚手架代码是:
dotnet ef dbcontext scaffold "Server=localhost;Database=database;Uid=myuid;" MySql.Data.EntityFrameworkCore -o Solution --project Solution.Project.Namespace
我也尝试过
dotnet ef dbcontext scaffold "Server=localhost;Database=database;Uid=myuid;" MySQL.Data.EntityFrameworkCore -o Solution --project Solution.Project.Namespace
我尝试通过开发人员 PowerShell 和包管理器控制台运行这两个命令。 结果相同。
我的 DbContext 是
using Solution.Data.Models;
using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore; // I tried using MySql.Data.EntityFrameworkCore as well
using System;
using System.Collections.Generic;
using System.Text;
namespace Solution.Backend
{
public class SolutionDBContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Journal> Journals { get; set; }
public DbSet<JournalComment> JournalComments { get; set; }
public DbSet<CartItem> CartItems { get; set; }
public DbSet<Order> Orders { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySQL("Server=localhost;Database=database;Uid=myuid;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
}
我的DbContext代码在一个名为Solution.Backend的项目中,我的模型在一个名为Solution.Data的项目中。
如果我注释掉所有的DbSet
并尝试仅运行包含OnConfiguring
和OnModelCreating
代码的DbContext,我会得到相同的结果。我是否遗漏了一些明显的东西,还是有什么地方我没有注意到,或者这是一个已知的错误?我在网上没有找到关于这个具体问题的任何信息。在此提前感谢您的帮助!
dotnet ef dbcontext scaffold "Server=localhost;Database=database;Uid=myuid;" MySql.Data.EntityFrameworkCore -o *Solution* --project *Solution.Project.Namespace*
中,我尝试将其更改为 -o Solution.Project.Namespace,但它仍然出现了相同的问题。 - Schalk van der Merwe