调用SaveChanges方法

时间:2019-08-01 13:30:30

标签: c# .net entity-framework-core ef-core-2.0

(我为我的英语表示歉意)

更新
好吧,现在我感觉好笨,我忘了安装

软件包
  

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");
        }
}

2 个答案:

答案 0 :(得分:0)

根据您所报告的异常,它显示您要保存的实体;与数据库结构不匹配。将实体与表进行比较,以确保它们匹配。

答案 1 :(得分:0)

您应该更新ef核心nuget软件包。之后,希望错误会消失