2011-06-08 3 views
8

Je travaille sur un premier site de code EF, et je l'ai écrit mes classes et une classe de contexte, dont la source est:EF premier code ne génère pas de tableaux

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data.Entity; 
using MySite.SalesTool.Data.Entities; 
using System.Data.Entity.ModelConfiguration.Conventions; 


namespace MySite.SalesTool.Data 
{ 
    public class SalesToolEntities : DbContext 
    { 
     public DbSet<User> Users { get; set; } 
     public DbSet<UserRole> UserRoles { get; set; } 
     public DbSet<Job> Jobs { get; set; } 
     public DbSet<JobAssigner> JobAssigners { get; set; } 
     public DbSet<JobFile> JobFiles { get; set; } 
     public DbSet<JobStatus> JobStatuses { get; set; } 
     public DbSet<AssignedUser> AssignedUsers { get; set; } 
    } 
} 

Le projet se construit bien, mais quand je vais exécuter le site, aucune table n'est créée dans la base de données et j'obtiens une erreur indiquant que la base de données ne peut pas trouver l'objet de contexte auquel j'essaie d'accéder, sans doute parce que le code n'a généré aucune des tables nécessaires .

Des idées pour lesquelles il ne générerait aucune des tables et ne me donneraient aucune information d'erreur?

+0

Dans web. config vous devriez nommer votre chaîne de connexion exactement comme votre classe Context –

+0

Comment générez-vous la base de données? EF ne crée pas de tables seules - EF doit toujours créer toute la base de données. –

+0

Cela dépend réellement. Si c'est SQLCe alors il va le créer sur son propre –

Répondre

7

Avez-vous une stratégie d'initialisation?

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<SalesToolEntities>()); 

De ce que vous vous abonnez, il semble que vous ayez créé vous-même la base de données. Vous devez ensuite spécifier une stratégie d'initialisation sinon aucune table/donnée ne sera ajoutée à la base de données et l'interrogation de la base de données entraînera une exception: {"La table spécifiée n'existe pas."}

+0

Spot sur! Cela a résolu le problème. Je vous remercie. – Tim

+0

Cette ligne doit-elle être incluse dans le fichier global.asax ou dans le fichier d'initialisation qui tente de créer de nouvelles tables avec des données de test? En utilisant EF6 et en essayant de créer quelques tables avec des données de test, la base de données est en cours de création mais aucune de ces tables ne l'est. – KBriz

+0

Dans global.asax. Et vous devriez soumettre une nouvelle question au lieu de soumettre une réponse avec une question: vous obtiendrez des réponses plus rapides de cette façon. –

Questions connexes