(我为我的英语表示歉意)
更新
好吧,现在我感觉好笨,我忘了安装
Microsoft.Entityframeworkcore.tools
在我的控制台应用程序Project中。我安装了软件包,它可以正常运行。我不知道这对某人是否有帮助,但我会让这个职位开放。礼炮!!
我正在使用.Net Framework控制台应用程序中的Entity Framework Core做一些测试。我的解决方案分为三个项目:一个用于模型,一个用于数据上下文和一个用于控制台应用程序。
我正在使用Mysql服务器作为数据库,并非常容易地通过迁移创建数据库,但是当我尝试在数据库中插入一些数据时,当我调用SaveChanges
方法时,我的应用程序会引发异常
我需要构建企业应用程序,并且需要将现有数据库(.dbf
)迁移到Mysql。我正在尝试在其中进行一些测试的控制台应用程序中使用EF Core。
处分交易。
正在关闭与服务器“ localhost”上的数据库“ EntityFrameworkCore”的连接。
与服务器“ localhost”上的数据库“ EntityFrameworkCore”的关闭连接。在保存上下文类型'EntityFrameworkCore.Data.TiendaContext'的更改时,数据库中发生了异常。
Microsoft.EntityFrameworkCore。 DbUpdateException :
更新条目时发生错误。有关详细信息,请参见内部异常。
---> System.MissingFieldException:不支持:'Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.ThrowReadValueExceptionMethod'。
这是我的程序类
class Program
{
static void Main(string[] args)
{
InsertCliente();
}
private static void InsertCliente()
{
using (var ctx = new TiendaContext())
{
var cliente = new Cliente { Nombre = "Pedro" };
ctx.GetService<ILoggerFactory>().AddProvider(new MyLoggerProvider());
ctx.Clientes.Add(cliente);
ctx.SaveChanges();
}
}
}
我的DbContext
班级
public class TiendaContext:DbContext
{
public DbSet<Cliente> Clientes { get; set; }
public DbSet<Producto> Productos { get; set; }
public DbSet<Transaccion> Trasacciones { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ProductosTransacciones>()
.HasKey(k => new { k.ProductoId, k.TransaccionId });
base.OnModelCreating(modelBuilder);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySQL(
"server=localhost;port=3306;database=EntityFrameworkCore;uid=root;password=408792");
}
}
答案 0 :(得分:0)
根据您所报告的异常,它显示您要保存的实体;与数据库结构不匹配。将实体与表进行比较,以确保它们匹配。
答案 1 :(得分:0)
您应该更新ef核心nuget软件包。之后,希望错误会消失