0

我想在主页上表示现有本地 Access DB 的数据。为此,我将 ASP.NET MVC 与 Framework 4.7.2 一起使用。我必须使用EntityFrameworkCore.Jet,所以我不能使用Core。安装了以下软件包:

  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Tools
  • EntityFrameworkCore.Jet

所以我尝试在 Package-Manager-Console 中搭建我的数据库:

Scaffold-DbContext “Data Source=C:\...\AKneu.mdb” EntityFrameworkCore.Jet -OutputDir Models

但它会抛出一个错误:

System.TypeLoadException:程序集“EntityFrameworkCore.Jet,Version = 2.2.0.0,Culture = Neutral,PublicKeyToken = adb9793829ddae60”的类型“EntityFrameworkCore.Jet.Scaffolding.Internal.JetDatabaseModelFactory”中的方法“Create”没有实现。

我找不到它找不到程序集的原因。你有什么想法,为什么它不起作用?

4

2 回答 2

1

要使用脚手架,您需要使用 Visual Studio 2015,GitHub 项目的wiki中提到了这一点:

如果您已经有一个数据库,您可以使用 Package Manager Console Scaffold-DbContext 命令从现有数据库创建模型类。此功能仅在 Visual Studio 2015 中可用。

不久前我遇到了类似的问题,并指出为了使脚手架工作,您还需要使用 EntityFrameworkCore 的 2.1.2 版本和 Jet-Provider 的 2.0.0 版本。不幸的是,我没有说明为什么需要这样做,但它可能会对您有所帮助。

于 2020-11-04T14:13:17.500 回答
0

问题是您正在尝试将EFCore.Jet 2.2.0 提供程序与 EF Core 3.x 一起使用。EF Core 2.2 提供程序与 EF Core 3.x 不兼容,并且会由于 EF Core 3.x 对其提供程序的期望发生变化而引发此错误。

要解决此问题,请使用来自 nuget.org 的最新版本的 EF Core 3.1.x(当前版本3.1.10)和最新版本的 EFCore.Jet 3.1.x(当前为预发布版本 3.1.0-alpha.4)。

EF Core 3.1 及其提供程序符合 .NET Standard 2.0,因此不仅支持 .NET (Core) 2.0+,还支持 .NET Framework 4.6.1+。

于 2020-12-25T18:50:07.340 回答