與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,用記事本打開文件,你就有了連接字符串。

編輯您可能因為錯過了推薦而收到此錯誤。實體框架使用擴展方法。因此,它可能會編譯但仍然無效。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因