Entity Framework avec connexion OleDB - suis-je tout simplement fou?

c# entity-framework ms-access

Question

J'expérimente avec Entity Framework et je souhaite me connecter à une base de données Access 2007.

Le code suivant est inspiré de http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx

Je soupçonne que j'ai le mauvais bout du bâton ...

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 m'indique qu'il ne prend pas en charge la propriété DataSource. Je peux très bien me connecter à ADO.net, donc je sais que le chemin et le fournisseur sont corrects.

Est-ce juste la mauvaise approche complète?

Réponse acceptée

L'approche que vous utilisez pour créer la chaîne de connexion EF est correcte.

MAIS...

Entity Framework fonctionne uniquement avec les fournisseurs (c.-à-d. SqlClient) qui prennent en charge quelque chose appelé services de fournisseur.

Le fournisseur OleDB ne prend pas en charge les «Services de fournisseur». Vous ne pouvez donc pas utiliser EF avec OleDb (sauf si vous pouvez trouver un fournisseur tiers OleDb prenant en charge EF).

J'espère que cela t'aides

Alex

(Entity Framework Team, Microsoft)


Réponse populaire

Pour créer votre chaîne de connexion, créez un fichier sur votre bureau appelé a.udl.

Double-cliquez dessus, devrait ouvrir une interface utilisateur. Suivez l'assistant, testez la connexion.

Fermez ensuite l'interface utilisateur, ouvrez le fichier avec le bloc-notes et vous aurez votre chaîne de connexion.

EDIT Il se peut que vous obteniez cette erreur car il vous manque une référence. Entity Framework utilise des méthodes d'extension. Par conséquent, il pourrait compiler mais ne pas fonctionner.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow