4 Réponses :


1
votes

Je ne suis pas sûr que vous ayez soit fin du bâton. :)

Consultez Cet exemple à la place . Il peut y avoir d'autres problèmes avec votre code, mais on dirait que vous définissez la propriété Connections de Builder de l'entité lorsque vous devez définir sa propriété fournisseurConnectionsRing (entre autres propriétés).

Il me semble que pour quelque chose appelé un "constructeur de chaînes de connexion", la propriété ConnectionRing doit être en lecture seule (ce n'est pas). Je suppose que cela est destiné à doubler également en tant qu'alser de chaîne de connexion.

Edit: Je viens de regarder votre code à nouveau, et je pense que tout ce que vous avez à faire est de modifier les connexions au fournisseurConnectionsRing. Vous pouvez avoir le bâton après tout!


3 commentaires

J'avais déjà essayé cela et ensuite, il demande que des métadonnées soient définies. Je ne sais pas comment générer ça.


Me bat aussi. Je suppose que les métadonnées d'accès sont l'emplacement du fichier .MDB. MSDN est vraiment suce parfois (c'est l'un de ces moments). Je suis sûr que tout est généré automatiquement des commentaires du code, de sorte que les choses plus inhabituelles vont souvent complètement inexpliquées. Si je faisais ça, je sauterais toute la chose de constructeur à cordes d'entité.


Le conseil de Shiraz est meilleur. :)



1
votes

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 Bloc-notes et vous avez votre chaîne de connexion.

edit Il se peut que vous obtenez cette erreur parce que vous manquez une référence. L'entité cadre utilise des méthodes d'extension. Par conséquent, cela pourrait compiler mais ne fonctionne toujours pas.


2 commentaires

Je pense que vous avez besoin d'un "voilà" là quelque part. C'est un tour pratique.


Wow! Je ne savais pas que vous pourriez générer des cordes de connexion comme ça. Malheureusement, l'entitéConnection ne prend pas en charge la propriété "Source de données". (Ou suis-je juste un idiot)



16
votes

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

mais ...

Le cadre d'entité ne fonctionne que avec des fournisseurs (c'est-à-dire SQLCLIENT) qui prennent en charge quelque chose appelé Services aux fournisseurs.

Le fournisseur OLEDB ne prend pas en charge les "services de fournisseur" de sorte que vous ne pouvez pas utiliser EF avec l'OLEDB (à moins que vous ne puissiez trouver un fournisseur OLDED tiers avec support pour EF).

J'espère que cela aide

alex

(équipe-cadre d'entité, Microsoft)


3 commentaires

Merci pour ça. Je était juste être fou de noix après tout :)


Est-ce toujours vrai en 2018?


@ Danielmöller Voir Github.com/BUBIBUBI/JETENTITITYFRADEWORKProvider



0
votes

probablement OLEDB ne fonctionne pas avec EF, mais l'initialisation fonctionne bien si vous définissez l'entitéBuilder et l'OLEDBCONN de cette manière.

        OleDbConnectionStringBuilder oledbConn = new OleDbConnectionStringBuilder();
        oledbConn.Provider = "Microsoft.Jet.OLEDB.4.0";
        oledbConn.DataSource = @"C:\Users\Utente\Documents\visual studio 2013\Projects\How to implement the1\Debug\Test.mdb";

        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.Provider = "System.Data.EntityClient";
        string connectionString = string.Format("metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=System.Data.OleDb;provider connection string='{0}'", oledbConn);
        entityBuilder.ConnectionString = connectionString;
        EntityConnection ec = new EntityConnection(entityBuilder.ToString());
        ec.Open();
        ec.Close();


0 commentaires