如何将 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迁移基本面拾遗