Я экспериментирую с Entity Framework и хочу подключиться к базе данных 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, является правильным.
НО...
Entity Framework работает только с провайдерами (т.е. SqlClient), которые поддерживают так называемые сервисы провайдеров.
Поставщик OleDB не поддерживает «Услуги провайдера», поэтому вы не можете использовать EF с OleDb (если только вы не можете найти стороннего поставщика OleDb с поддержкой EF).
Надеюсь это поможет
Alex
(Entity Framework Team, Microsoft)
Чтобы создать строку подключения, создайте на рабочем столе файл с именем a.udl.
Двойной щелчок по нему, должен открыть пользовательский интерфейс. Следуйте указаниям мастера, проверьте соединение.
Затем закройте пользовательский интерфейс, откройте файл с помощью блокнота, и вы получите строку подключения.
РЕДАКТИРОВАТЬ Возможно, вы получаете эту ошибку, потому что вы пропускаете ссылку. Entity Framework использует методы расширения. Поэтому он может скомпилироваться, но все равно не сработает.