问题描述
我是Entity Framework的新手,我今天尝试开发一个简单的C#脚本,该脚本将使用Entity Framework Core Jet来列出本地MS Access DB中指定的所有公司。
但是,我在“ OnConfiguring”功能中始终遇到错误,提示:
System.TypeLoadException:类型中的方法“ get_Info” 'EntityFrameworkCore.Jet.Infrastructure.Internal.JetoptionsExtension' 来自程序集'EntityFrameworkCore.Jet,Version = 2.2.0.0, 文化=中性,PublicKeyToken = adb9793829ddae60'没有 实施。”
请注意,我正在开发的C#控制台应用程序是在.NET Framework 4.7.2中开发的。我也尝试过使用.NET Core 3,.NET Core 2.1等开发相同的脚本,但是所有这些都具有相同的结果。
我在下面提供了有关数据库的所有信息以及我到目前为止编写的代码。
数据库设计
- ID(自动编号,主键)
- CompanyName(短文本)
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:\Users\arand\Desktop\EFTestProject\Data\Data.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();
}
}
}
谢谢!
解决方法
System.TypeLoadException:程序集'EntityFrameworkCore.Jet,Version = 2.2.0.0,Culture = neutral,Public = Token,PublicKeyToken = adb9793829ddae60'中类型'EntityFrameworkCore.Jet.Infrastructure.Internal.JetOptionsExtension'中的'方法'get_Info'没有实施。”
版本EntityFrameworkCore.Jet
中的2.2.0
提供程序仅与EF Core 2.2.x兼容。因此它不适用于EF Core 3.0.0 +。
如果您想将EntityFrameworkCore.Jet
与EF Core 3.1一起使用,请使用nuget.org中最新的官方预发行版(截止日期为3.1.0-alpha.3
),或使用最新的{{ 3}}来自我们的daily build。
它与.NET Standard 2.0兼容,因此可与.NET Framework 4.6.1+和.NET(Core)2.0+一起使用。