EntityFrameworkCore.Jet возвращает ошибку при попытке подключиться к MS Access DB

#c# #entity-framework #ms-access #entity-framework-core #jet-ef-provider

#c# #entity-framework #ms-access #entity-framework-core #jet-ef-provider

Вопрос:

Я новичок в Entity Framework, и сегодня я пытался разработать простой скрипт на C #, который будет использовать Entity Framework Core Jet, чтобы перечислить все компании, указанные в локальной базе данных MS Access.

Тем не менее, я продолжаю получать ошибку в функции «OnConfiguring», в которой говорится:

Система.Исключение TypeLoadException: ‘Метод ‘get_Info’ в типе ‘EntityFrameworkCore.Jet.Infrastructure.Внутренний.JetOptionsExtension»из сборки» EntityFrameworkCore .Jet, Version= 2.2.0.0, Culture= нейтральный, PublicKeyToken=adb9793829ddae60′ не имеет реализации.’

Обратите внимание, что консольное приложение C #, которое я разрабатываю, разрабатывается в .NET framework 4.7.2. Я также пытался разработать тот же сценарий с .NET Core 3, .NET Core 2.1 и т.д., Но все они имели одинаковый результат.

Ниже я предоставляю всю информацию о базе данных и коде, который я написал до сих пор.

Проектирование базы данных

База данных содержит только одну таблицу под названием «Компании», которая содержит следующие поля:

  • ИДЕНТИФИКАТОР (автономер, первичный ключ)
  • Название компании (короткий текст)

DataContext.cs

 using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using EntityFrameworkCore.Jet;

namespace EntityFrameworkCoreJetTest5 {
    public class DataContext : DbContext {
        public DbSet<Company> Companies { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
            
            //The issue occurrs here

            optionsBuilder.UseJet(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersarandDesktopEFTestProjectDataData.accdb;");

        }

    }

    public class Company {
        public int ID { get; set; }
        public string CompanyName { get; set; }
    }

}
  

Program.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EntityFrameworkCoreJetTest5 {
    class Program {
        static void Main(string[] args) {

            using (DataContext dbContext = new DataContext()) {

                foreach(Company c in dbContext.Companies) {

                    Console.WriteLine(c.CompanyName);

                }

            }

            Console.ReadKey();

        }
    }
}
  

Спасибо!

Комментарии:

1. Похоже на EntityFrameworkCore . Jet работает только с EF Core 2.2.0. Проверьте это.

2. На самом деле мы также поддерживаем EF Core 1.0, EF Core 2.2 и EF Core 3.0.

Ответ №1:

Система.Исключение TypeLoadException: ‘Метод ‘get_Info’ в типе ‘EntityFrameworkCore.Jet.Infrastructure.Внутренний.JetOptionsExtension»из сборки» EntityFrameworkCore .Jet, Version= 2.2.0.0, Culture= нейтральный, PublicKeyToken=adb9793829ddae60′ не имеет реализации.’

EntityFrameworkCore.Jet Поставщик в версии 2.2.0 совместим только с EF Core 2.2.x. Поэтому он не будет работать с EF Core 3.0.0 .

Если вы хотите использовать EntityFrameworkCore.Jet с EF Core 3.1, используйте наш последний официальный предварительный выпуск (на эту дату, это 3.1.0-alpha.3 ) из nuget.org , или используйте последнюю ежедневную сборку из нашей ленты AZDO.

Он совместим со стандартом .NET 2.0, поэтому он работает с .NET Framework 4.6.1 и .NET (Core) 2.0 .