我使用.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”
答案 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