标签: jet-ef-provider

如何使用MS Access数据库的实体框架

我必须在C#.Net 4.0中开发一个桌面窗口应用程序,它将在三个不同的数据库中运行,即.MS Access 2007及更高版本,Oracle 11G和SQL Server 2008.现在我想在我的应用程序中使用Entity Framework.这是我的应用程序使用EF的最佳选择吗?如果是,那么我如何使用Access数据库的实体框架?提前致谢.

entity-framework c#-4.0 jet-ef-provider

25
推荐指数
3
解决办法
6万
查看次数

Microsoft Jet DB是否与Entity Framework一起使用?

在本次论坛在这里,有人提到,实体框架不能使用Access(Jet数据库- .mdb)中.然而,它似乎有A如对Jet数据库供应商在这里

这让我觉得Entity Framework唯一需要的就是在定义模型之前定义以下内容:

<connectionStrings>  
    <add name="ProductContext"
         providerName="Microsoft.Jet.OLEDB.4.0"
         connectionString="Source=C:\mydatabase.mdb;Jet OLEDB:Database
                           Password=MyDbPassword;"/>
</connectionStrings> 
Run Code Online (Sandbox Code Playgroud)

有没有人知道实体框架是否适用于Jet DB,我想在开始之前确保它确实如此,因为我的设计文档依赖于这个事实.

谢谢

ms-access entity-framework jet jet-ef-provider

12
推荐指数
2
解决办法
2万
查看次数

错误 使用 Scaffold-DbContext、EntityFrameworkCore.Jet、.NetCore 时,无法从程序集 System.Data 加载类型 System.Data.OleDb.OleDbConnection

我正在尝试使用 Entity Framework Core 中的 Scaffold-DbContext 从现有的 MS Access 数据库创建模型。

在包管理器控制台中运行命令时:

Scaffold-DbContext "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Folder\Database.mdb;" EntityFrameworkCore.Jet
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Could not load type 'System.Data.OleDb.OleDbConnection' from assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=123123123'.
Run Code Online (Sandbox Code Playgroud)

我正在使用具有以下设置的 ClassLibrary 项目:

<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>
Run Code Online (Sandbox Code Playgroud)

我正在使用EntityFrameworkCore.Jet提供程序。

x32 和 x64 OleDb Dll 都在机器中:

C:\Program Files\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL
C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\ACEOLEDB.DLL
Run Code Online (Sandbox Code Playgroud)

从 Microsoft …

entity-framework-core .net-core jet-ef-provider .net-core-2.2

7
推荐指数
2
解决办法
5744
查看次数

Entity Framework Core 和 MS Access

我正在尝试使用JetEntityFrameworkProvider从 WPF MVVM 应用程序使用 Access 数据库,但无法使其工作。我已经创建了模型,使用 Add-Migration 创建了迁移,但是当我运行 Update-Database 时,该命令永远不会完成。它确实创建了数据库,但唯一的表是 MSysAccessStorage。文档中有一部分说

为了使提供程序正常工作,表 MSysRelationships 应该可以从管理员访问

并进一步说

这是默认配置,因此无需进行更改。2003版本以来的访问具有可见的系统表,因此无需分配权限。必须完成配置并设置正确的双表(在代码的早期阶段)。

JetConnection.DUAL = JetConnection.DUALForAccdb;

我尝试添加此内容,但我无法弄清楚“代码中的早期部分”在哪里。我已将其添加到 App.xaml.cs 的顶部和数据库上下文中,但都不起作用。当我添加它时,我得到:

当前上下文中不存在名称“DUAL”。当前上下文中不存在名称“JetConnection.DUALForAccdb”。

这是我的上下文中的 OnConfiguring

protected override void OnConfiguring( DbContextOptionsBuilder optionsBuilder )
{
    optionsBuilder.UseJet( @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\<User>\Desktop\New Folder\Staff.accdb;" );
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

c# ms-access entity-framework-core jet-ef-provider

6
推荐指数
1
解决办法
7263
查看次数

JetEntityFramework与EF 6?

因为作者要求帮助请求转到StackOverflow,所以在这里抛出这个.

有一个正在进行的现有应用程序,最初写入SQL Server.可悲的是,现在有一个非常古老的Access数据库,我必须与之交谈.尝试使用JetEntityFramework帮助我,所以我不需要进行批发替换.走出大门,我抛出这个例外.我怀疑web.config有问题,因为正确设置它的文档很少.

错误

System.InvalidOperationException未由用户代码处理
HResult = -2146233079 Message =实体框架提供程序类型'JetEntityFrameworkProvider.JetProviderFactory,JetEntityFrameworkProvider,Version = 1.2.4.0,Culture = neutral,PublicKeyToken = 756cf6beb8fe7b41'的'Instance'成员未返回继承自'System.Data.Entity.Core.Common.DbProviderServices'的对象.实体框架提供程序必须从此类继承,并且"实例"成员必须返回提供程序的单例实例.这可能是因为提供者不支持实体框架6或更高版本; 有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882.

这是我的web.config的相关片段(被要求更改DBContext和MDB文件的实际名称)

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="JetEntityFrameworkProvider" type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="MyDBContext" 
         connectionString="Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\MyAccessDB.MDB" 
         providerName="JetEntityFrameworkProvider.JetConnection" />
  </connectionStrings>
  <system.data>
    <DBProviderFactories>
      <remove invariant="JetEntityFrameworkProvider"/>
      <add invariant="JetEntityFrameworkProvider"
           name="Jet Entity Framework Provider"
           type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
    </DBProviderFactories>
  </system.data>
Run Code Online (Sandbox Code Playgroud)

c# entity-framework jet-ef-provider

5
推荐指数
1
解决办法
2186
查看次数