首页 > 解决方案 > 调用 SaveChanges 方法时,EF Core 引发异常

问题描述

(我为我的英语道歉)

更新
好吧,现在我感觉很愚蠢,我忘了安装包

Microsoft.Entityframeworkcore.tools

在我的控制台应用程序项目中。我安装了软件包并且它运行正常。我不知道这是否对某人有帮助,但我会让帖子打开。致敬!!!


我正在 .Net Framework 控制台应用程序中使用 Entity Framework Core 进行一些测试。我将我的解决方案分为三个项目:一个用于我的模型,一个用于我的数据上下文,一个用于控制台应用程序。

我正在使用 Mysql 服务器作为数据库,并使用迁移轻松创建数据库,但是当我尝试在数据库中插入一些数据时,当我调用该SaveChanges方法时,我的应用程序会引发异常。

我需要构建一个企业应用程序,并且需要将现有数据库(.dbf)迁移到 Mysql。我正在尝试在控制台应用程序中使用 EF Core 并进行一些测试。

处置交易。
关闭与服务器“localhost”上的数据库“EntityFrameworkCore”的连接。
关闭与服务器“localhost”上的数据库“EntityFrameworkCore”的连接。

保存上下文类型“EntityFrameworkCore.Data.TiendaContext”的更改时,数据库中发生异常。

Microsoft.EntityFrameworkCore。DbUpdateException
更新条目时发生错误。有关详细信息,请参阅内部异常。
---> System.MissingFieldException: Campo no encontrado: '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");
        }
}

标签: c#.netentity-framework-coreef-core-2.0

解决方案


从您报告的异常中可以看出您正在尝试保存的实体;与数据库结构不匹配。将实体与表进行比较以确保它们匹配。


推荐阅读