使用Microsoft Access的实体框架

时间:2013-08-25 15:09:46

标签: entity-framework ms-access connection-string

我使用.accdb文件。我创建了课程

using System.Data.Entity;

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

并添加connectionString

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

首次查询到DB后,我得到ProviderIncompatibleException:“存储库typeOf中的”调用“get_ProviderFactory”System.Data.OleDb.OleDbConnection“返回null”

2 个答案:

答案 0 :(得分:6)

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

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

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

但是,请先阅读this thread

  

实体框架不支持OLEDB连接,所以你的   连接字符串不起作用。这几乎是不可能的   实体框架与MS Access协作。

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

答案 1 :(得分:5)

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

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

修改
Access EF提供程序现在托管在GitHub上 https://github.com/bubibubi/JetEntityFrameworkProvider