#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 .