与OleDB连接的实体框架 - 我只是简单的坚果?

c# entity-framework ms-access

我正在尝试实体框架,我想连接到Access 2007数据库。

以下代码的灵感来自http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx

我怀疑我的错误结束了......

OleDbConnectionStringBuilder oledbConn = new OleDbConnectionStringBuilder();

oledbConn.DataSource = @"..\..\..\..\Pruebas.accdb"; //yep Access 2007!

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder ();
entityBuilder.Provider = "Microsoft.ACE.OLEDB.12.0";
entityBuilder.ConnectionString = oledbConn.ToString();
EntityConnection ec = new EntityConnection(entityBuilder.ToString());
ec.Open();
ec.Close();

EntityConnectionStringBuilder告诉我它不支持DataSource属性。我可以很好地与ADO.net连接,所以我知道路径和提供商是正确的。

这只是完全错误的做法吗?

一般承认的答案

您用于构建EF连接字符串的方法是正确的。

但...

实体框架仅适用于支持提供者服务的提供者(即SqlClient)。

OleDB提供程序不支持“提供程序服务”,因此您不能将EF与OleDb一起使用(除非您可以找到支持EF的第三方OleDb提供程序)。

希望这可以帮助

亚历克斯

(实体框架团队,微软)


热门答案

要构建连接字符串,请在桌面上创建一个名为a.udl的文件

双击它,应该打开一个UI。按照向导,测试连接。

然后关闭UI,用记事本打开文件,你就有了连接字符串。

编辑您可能因为错过了推荐而收到此错误。实体框架使用扩展方法。因此,它可能会编译但仍然无效。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因