EF Core выдает исключение при вызове метода SaveChanges

(прошу прощения за мой английский)

ОБНОВЛЕНИЕ
Ну, теперь я чувствую себя настолько глупым, что забыл установить пакет

Microsoft.Entityframeworkcore.tools

В моем консольном приложении Project. Я устанавливаю пакет, и он работает правильно. Я не знаю, может ли это быть полезным для кого-то, но я открою пост. Салудос!!!


Я провожу несколько тестов с Entity Framework Core в консольном приложении .Net Framework. Мое решение разделено на три проекта: один для моих моделей, один для моего контекста данных и один для консольного приложения.

Я использую сервер Mysql для базы данных и так легко создаю базу данных с миграциями, но когда я пытаюсь вставить некоторые данные в базу данных, когда я вызываю метод SaveChanges, мое приложение выдает исключение.

Мне нужно создать корпоративное приложение и перенести существующую базу данных (.dbf) в Mysql. Я пытаюсь использовать EF Core в консольном приложении, в котором и делаю некоторые тесты.

Удаление транзакции.
Закрытие соединения с базой данных "EntityFrameworkCore" на сервере "localhost".
Закрытие соединения с базой данных "EntityFrameworkCore" на сервере "localhost".

Исключение произошло в базе данных при сохранении изменений для типа контекста «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");
        }
}

person developLelu    schedule 01.08.2019    source источник


Ответы (2)


Из исключения, о котором вы сообщаете, появляется сущность, которую вы пытаетесь сохранить; не соответствует структуре базы данных. Сравните сущности с таблицами, чтобы убедиться, что они совпадают.

person Robert Perry    schedule 01.08.2019
comment
Если я не ошибаюсь, это та же структура, я только что создал базу данных для миграции, используя то же решение, после чего я добавил новый проект ConsoleApp и установил код, как я опубликовал, и он не работает :(.. . - person developLelu; 01.08.2019

Вам следует обновить пакет ef core nuget. После этого, надеюсь, ошибка исчезнет

person Mehmet Demir    schedule 14.10.2019