无法使用EntityFrameworkCore.Jet来使用Scaffold-DbContext

时间:2018-08-29 08:47:08

标签: entity-framework-core jet-ef-provider

我一直在尝试为现有数据库生成实体框架模型。

我在Visual Studio 2017中使用EntityFrameworkCore.Jet-Provider(v2.1.0预览版5)和EntityFrameworkCore(v2.1.2)。我在Package Manager控制台中使用了以下命令:< / p>

PM> Scaffold-DbContext -Connection "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\..\workplace\TestProject\demo.accdb;Jet OLEDB:Database Password=****;" -Provider EntityFrameworkCore.Jet -OutputDir Models -verbose

这给了我这个输出:

Using project 'TestProject'.
Using startup project 'TestProject'.
Build started...
Build succeeded.
...
Using assembly 'TestProject'.
Using startup assembly 'TestProject'.
Using application base 'C:\..\workplace\TestProject\bin\Debug'.
Using working directory 'C:\..\workplace\TestProject'.
Using root namespace 'TestProject'.
Using project directory 'C:\..\workplace\TestProject\'.
Using configuration file 'C:\..\workplace\TestProject\bin\Debug\TestProject.exe.config'.
Finding design-time services for provider 'EntityFrameworkCore.Jet'...
Using design-time services from provider 'EntityFrameworkCore.Jet'.
Finding design-time services referenced by assembly 'TestProject'.
No referenced design-time services were found.
Finding IDesignTimeServices implementations in assembly 'TestProject'...
No design-time services were found.
System.InvalidOperationException: Der 'Microsoft.ACE.OLEDB.12.0'-Provider ist nicht auf dem lokalen Computer registriert.
...
Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
  

Der'Microsoft.ACE.OLEDB.12.0'-提供者nicht auf dem lokalen计算机注册商。

翻译成

  

“ Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

起初,我希望情况确实如此,并做了一些研究,使我here和我遵循了给定的解决方案,但是问题仍然存在。在文件夹C:\Program Files (x86)\Common Files\microsoft shared中查找包含子文件夹OFFICE12OFFICE14OFFICE16的子文件夹,每个子文件夹包含一个ACEOLEDB.DLL

通过在“代码优先”方法中使用进行了确认提供商实际上已注册并且可以使用!,但是在“程序包管理器”中使用时找不到。我是否缺少一些具体参考?

由于与CodeFirst一起使用时,完全相同的ConnectionString可以工作,因此可能是什么问题?还是未为数据库优先方法启用EntityFrameworkCore.Jet?

1 个答案:

答案 0 :(得分:1)

回顾此问题,我意识到编译配置已设置为Any CPU

请注意,我已经安装了office 32bit和相应的32位驱动程序集(请参见thisthis

虽然“代码优先”将在Any CPU配置中运行,但是Package-Manager-Console确实存在问题。 PMC似乎正在尝试解决此配置中的x64提供者。

在Visual Studio 2017中将此设置切换为x86解决了该问题:

Using assembly 'TestProject'.
Using startup assembly 'TestProject'.
Using application base 'C:\..\workplace\TestProject\bin\x86\Debug'.
Using working directory 'C:\..\workplace\TestProject'.
Using root namespace 'TestProject'.
Using project directory 'C:\..\workplace\TestProject\'.
Using configuration file 'C:\..\workplace\TestProject\bin\x86\Debug\TestProject.exe.config'.

将Project / StartupProject的“编译配置”切换为x86之后,PMC可以解析Microsoft.ACE.OleDb.12.0提供程序并成功搭建数据库。