I am trying to use Scaffold-DbContext from Entity Framework Core to create Models from an existing MS Access Database.
In Package Manager Console when I run the command:
Scaffold-DbContext "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Folder\Database.mdb;" EntityFrameworkCore.Jet
I get the following error:
Could not load type 'System.Data.OleDb.OleDbConnection' from assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=123123123'.
I'm using a ClassLibrary project with the following setup:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="EntityFrameworkCore.Jet" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
I'm using the EntityFrameworkCore.Jet provider.
Both x32 and x64 OleDb Dll's are in the machine:
C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL
C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\ACEOLEDB.DLL
The x64 installed from Microsoft Access Database Engine 2010 Redistributable and the x32 from Office Professional Plus 32-bit
Scaffold SQL database works fine.
Already went to https://github.com/bubibubi/EntityFrameworkCore.Jet/wiki/Limitations
Is something missing or this setup should work? Any help would be appreciated.
You need to target .Net Framework.
Actually OleDb is not ported to .Net Core. https://github.com/dotnet/corefx/issues/23542
You can try with .Net Framework 4.6 or 4.7.