2011-05-23 7 views
4

Est-ce possible? J'ai une base de données existante et des classes d'entités créées:Utiliser Entity Framework 4.1 avec SQLITE

public class MyContainer : DbContext 
{ 
    public DbSet<Item> Items { get; set; } 
    // more tables.. 
} 

Quand j'utilise cette chaîne de connexion échoue car il ne comporte aucun fichier de méta-données:

<connectionStrings>  
    <add name="MyContainer" 
     connectionString="metadata=.\items.csdl|.\items.ssdl|.\items.msl;provider=System.Data.SQLite;provider connection string=&quot;data source=.\mindstore.sqlite.s3db&quot;" 
     providerName="System.Data.EntityClient"/> 
    </connectionStrings> 

Mais quand j'omettent les métadonnées de la config il se plaint que vous n'êtes pas autorisé à omettre les méta-données de la config.

Alors, comment est-il possible d'utiliser SQLITE avec EF 4.1 sans aucun fichier de configuration xml et de faire simplement le mappage par convention?

Répondre

1

Si vous souhaitez d'abord utiliser le code EF sans EDMX, vous ne pouvez pas utiliser EntityClient. Utiliser la chaîne de connexion ADO.NET commun pour SQLite:

<connectionStrings>  
    <add name="MyContainer" providerName="System.Data.SQLite" 
     connectionString="data source=.\mindstore.sqlite.s3db" /> 
</connectionStrings> 

Edit:

Pour désactiver les contrôles de création de bases de données et base de données essayez de supprimer convention de métadonnées par défaut et la mise en base de données initialiseur à null.

Database initialiseur:

// call this only once in your application bootstrap 
Database.SetInitializer<YourContext>(null); 

Retrait de la convention:

// Place this to your derived context 
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    base.OnModelCreationg(modelBuilder); 

    modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
} 
+0

Maintenant, il me dit "DatabaseExists est pas pris en charge par le fournisseur." – codymanix

+0

Vous rencontrez maintenant un problème car votre fournisseur ne prend pas en charge toutes les fonctionnalités nécessaires utilisées par le code EF en premier lieu. Vérifiez s'il existe une version plus récente du fournisseur ou essayez de désactiver toutes les fonctions EF liées à la création de la base de données (vous devrez créer une base de données et vous-même les tables). –

+0

La base de données existe déjà, donc ce n'est pas un problème. Comment puis-je désactiver ces fonctionnalités qui échouent ici? – codymanix

Questions connexes