3

我是 Entity Framework 的新手,今天我正在尝试开发一个简单的 C# 脚本,它将使用 Entity Framework Core Jet 来列出本地 MS Access DB 中指定的所有公司。

但是,我在“OnConfiguring”函数中不断收到错误消息,它说:

System.TypeLoadException:来自程序集“EntityFrameworkCore.Jet,版本=2.2.0.0,文化=中性,PublicKeyToken=adb9793829ddae60”的“EntityFrameworkCore.Jet.Infrastructure.Internal.JetOptionsExtension”类型中的“方法“get_Info”没有实现。

请注意,我正在开发的 C# 控制台应用程序是在 .NET 框架 4.7.2 中开发的。我也尝试使用 .NET Core 3、.NET Core 2.1 等开发相同的脚本,但所有这些都有相同的结果。

我在下面提供了有关数据库的所有信息以及我迄今为止编写的代码。

数据库设计

数据库仅包含一个名为“Companies”的表,其中包含以下字段:

  • ID(自动编号,主键)
  • 公司名称(短文本)

数据上下文.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; }
    }

}

程序.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();

        }
    }
}

谢谢!

4

1 回答 1

3

System.TypeLoadException:来自程序集“EntityFrameworkCore.Jet,版本=2.2.0.0,文化=中性,PublicKeyToken=adb9793829ddae60”的“EntityFrameworkCore.Jet.Infrastructure.Internal.JetOptionsExtension”类型中的“方法“get_Info”没有实现。

版本中的EntityFrameworkCore.Jet提供程序2.2.0仅与 EF Core 2.2.x 兼容。所以它不适用于 EF Core 3.0.0+。

如果您想与 EF Core 3.1 一起使用,请使用来自nuget.orgEntityFrameworkCore.Jet的最新官方预发布版本(截至目前,这是3.1.0-alpha.3) ,或使用来自我们AZDO 提要的最新每日版本

它与 .NET Standard 2.0 兼容,因此可以与 .NET Framework 4.6.1+ 和 .NET (Core) 2.0+ 一起使用。

于 2020-11-28T22:47:51.187 回答