如何将 Entity Framework Code First 与现有的 MS Access (.accdb) 数据库一起使用?

Posted

技术标签:

【中文标题】如何将 Entity Framework Code First 与现有的 MS Access (.accdb) 数据库一起使用?【英文标题】:How can I use Entity Framework Code First with an existing MS Access (.accdb) database? 【发布时间】:2013-07-02 04:37:54 【问题描述】:

我关注了this MVC 4 tutorial,,但在让控制器从我现有的数据库中读取数据时遇到了问题。

我已经改变了我的控制器来覆盖这样的构造函数:

public ItemDBContext()
        : base("dbName")
    
    

但是当我在调试时尝试访问 /Items 路由时,我得到了这个错误:

Unable to find the requested .Net Framework Data Provider.  It may not be installed.


Line 19:         public ActionResult Index()
Line 20:         
Line 21:             return View(db.Items.ToList());
Line 22:         

这是我的连接字符串:

<add name="dbName" connectionString="Data Source=C:\dbName.accdb; Jet OLEDB:Database Password=passWord;" providerName="Microsoft.ACE.OLEDB.12.0"/>

我不确定我到底哪里出错了。我正在尝试将我创建的模型映射到预先存在的数据库,但我不知道如何使用 MS Access 数据库进行操作。

【问题讨论】:

你有什么版本的访问权限? 我实际上没有 MS Access;只是一个数据库。不过,我很确定这是 2007 年。 【参考方案1】:

您收到此消息的原因是 .Net 不知道如何打开 DB 文件,因为您没有在运行 ASP.NET 代码的服务器计算机上安装 MS-Access。

你有两个选择。

安装 MS-Access 20007(它将包括“Microsoft.ACE.OLEDB.12.0”的驱动程序) 或仅从此处下载并安装 Access DB 引擎 (http://www.microsoft.com/en-us/download/details.aspx?id=13255)

【讨论】:

我已经安装了 MS Access 2007 数据库引擎。您链接了我刚刚安装的 2010 版本,但我仍然遇到同样的问题。【参考方案2】:

没有适用于 Microsoft Access 的实体框架提供程序。

如果您想使用便携式数据库进行测试,我建议使用 Sql Server CE 4.0 或 SQLite,两者都有 EF 提供程序。

【讨论】:

+1 有关详细信息,请参阅Can my ASP.NET web application use a Microsoft Access database?,特别是“Jet 提供程序已被 ACE 提供程序取代,明确禁止在 Web 应用程序中使用”的部分。

以上是关于如何将 Entity Framework Code First 与现有的 MS Access (.accdb) 数据库一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Code First Fluent API - 配置关系

如何在 Entity Framework Code First 中使属性唯一

Entity Framework Code First迁移基本面拾遗

如何在 Entity Framework Code First 中删除表?

Entity Framework Code First

如何使用 Entity Framework Code First Fluent API 指定表名