8

我使用 .accdb 文件。我创建了班级

using System.Data.Entity;

    class MSADbContext:DbContext
    {
        public DbSet<Product> Products { get; set; }
    }

并添加连接字符串

<add name="MSADbContext" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\SportsStore.accdb" providerName="System.Data.OleDb"/>

在第一次查询数据库后,我得到 ProviderIncompatibleException:“在存储库 typeOf“System.Data.OleDb.OleDbConnection”中调用“get_ProviderFactory”返回 null”

4

2 回答 2

10

您的连接字符串将用于 .mdb (Access 2003-) 文件。在此处检查连接字符串

您需要 ACE OLEDB 提供程序。标准安全:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;
Persist Security Info=False;

但是,请先阅读此线程

实体框架不支持 OLEDB 连接,因此您的连接字符串将不起作用。让 Entity Framework 与 MS Access 协作几乎是不可能的。

几乎不可能是非常引人注目的。

于 2013-08-25T15:37:41.910 回答
8

OLEDB 不能支持实体框架,因为实体框架需要实体框架提供者为特定数据库生成正确的查询(而 OLEDB 是通用数据库访问)。您需要 Microsoft Access 的特定提供程序。

您可以在此处找到 Microsoft Access 实体框架提供程序 https://jetentityframeworkprovider.codeplex.com/

编辑
Access EF 提供程序现在托管在 GitHub
https://github.com/bubibubi/JetEntityFrameworkProvider

于 2015-01-05T15:53:42.117 回答