2014-09-18 2 views
0

J'ai un très petit exécutable WPF que je veux être autonome. J'ai wittled les dépendances externes vers un seul fichier MyApp.exe.config. Il a besoin de cela parce que j'utilise Entity Framework. Est-ce que de toute façon je peux configurer ceci dans le code pour qu'il puisse être compilé dans mon exécutable?Comment configurer Entity Framework dans mon code?

Voici mon fichier de configuration:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" /> 
    </startup> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
       <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
    <entityFramework> 
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> 
      <parameters> 
       <parameter value="System.Data.SqlServerCe.4.0" /> 
      </parameters> 
     </defaultConnectionFactory> 
     <providers> 
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" /> 
     </providers> 
    </entityFramework> 
    <system.data> 
     <DbProviderFactories> 
      <remove invariant="System.Data.SqlServerCe.4.0" /> 
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
     </DbProviderFactories> 
    </system.data> 
</configuration> 
+1

Je suis d'accord et j'ai voté à nouveau pour cela. –

+1

Si vous utilisez EF6, cet article a ifnormation sur la configuration basée sur le code: http://msdn.microsoft.com/en-us/data/jj680699 –

+0

Merci! Je suis si fatigué de ces zélotes. J'ai cherché un débordement de pile avant de poser ma question. Ils terminent ma question sans même la lire ou donner une explication. Le débordement de pile n'est pas un endroit pour trouver des réponses, plus. – Jordan

Répondre

2

Le lien fourni dans les commentaires par John Koerner a résolu mon problème. Pour toute personne qui est à la recherche de la solution est ici le code que je:

public class MyDbConfiguration : DbConfiguration 
{ 
    public MyDbConfiguration() 
    { 
     SetDefaultConnectionFactory(new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0")); 
     SetProviderServices("System.Data.SqlClient", SqlProviderServices.Instance); 
     SetProviderServices("System.Data.SqlServerCe.4.0", SqlCeProviderServices.Instance); 
    } 
} 

Je viens inclus cet objet dans le même ensemble que mon DbContext. Cela a fonctionné à merveille.

Questions connexes