J'utilise EF 6.1 Code First. Je configuration par programme la chaîne de connexion à l'exécution comme:Configuration du fournisseur de framework d'entité
myContext.Database.Connection.ConnectionString = "Data Source=(localdb)\v11.0;Initial Catalog=MyDb;Integrated Security=True;"
Cela fonctionne bien, mais seulement si je garde certaines informations de connexion de plaque de la chaudière dans mon app/web.config:
<connectionStrings>
<add name="MyDb" connectionString="Data Source=NOTUSED;Initial Catalog=NOTUSED;" providerName="System.Data.SqlClient" />
</connectionStrings>
Je soupçonne C'est parce que je ne fournis pas l'information du fournisseur. Je spécifie le fournisseur et sections defaultConnectionFactory (SQL Server/LocalDbConnectionFactory), mais il ne semble pas se soucier:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
Si je supprime la section chaînes de connexion, il tente de se connecter à un fichier mdf qui n » t existe:
System.Data.SqlClient.SqlException: Impossible de joindre le fichier 'C: \ Mon projet \ App_Data \ MyDb.mdf' comme base de données MyDb.
Normalement, la chaîne de connexion localdb génère un chemin vers c: \ users \ my_user \ MyDb.mdf. Il semble donc qu'il n'utilise pas l'usine LocalDb à moins d'avoir la section de chaîne de connexion dans mon fichier .config.
Comment est-ce que je peux spécifier - sur une base par contexte - les informations de providerName qu'EF obtient de ce noeud de chaîne de connexion? Ou est-ce que j'aboie le mauvais arbre ici?
C'était correct. Je m'excuse de ne pas l'avoir confirmé plus tôt. Si vous le souhaitez, je peux créer une autre question de prime et attribuer des points de cette façon. – RMD
Hey RMD, Ce serait génial. Content que cela ait réglé votre problème. – blorkfish