微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试连接到MS Access DB时,EntityFrameworkCore.Jet返回错误

如何解决尝试连接到MS Access DB时,EntityFrameworkCore.Jet返回错误

我是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+一起使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。