2011-06-08 15 views
8

Estoy trabajando en un primer sitio Código EF, y he escrito mis clases y una clase de contexto, la fuente de la cual es:Tablas EF Código Primero no generar

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; } 
    } 
} 

El proyecto se basa bien, pero cuando voy a ejecutar el sitio, no se crean tablas en la base de datos y aparece un error que dice que la base de datos no puede encontrar el objeto de contexto al que intento acceder, presumiblemente porque el código no ha generado ninguna de las tablas necesarias. .

¿Alguna idea de por qué no genera ninguna de las tablas y no me da ningún tipo de información de error?

+0

En web. config debe nombrar su cadena de conexión exactamente como su clase de contexto –

+0

¿Cómo se genera la base de datos? EF no crea tablas solo: EF siempre tiene que crear la base de datos completa. –

+0

Eso realmente depende. Si es SQLCe, entonces lo creará en su propio –

Respuesta

7

¿Tiene una estrategia de inicialización?

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

Según lo que se suscribe, parece que ha creado la base de datos usted mismo. Luego, debe especificar una estrategia de inicialización , de lo contrario, no se agregarán tablas/datos a la base de datos y la consulta generará una excepción: {"La tabla especificada no existe. [Alguna]"}

+0

Spot on! Eso ha resuelto el problema. Gracias. – Tim

+0

¿Se debe incluir esta línea en el archivo global.asax o en el archivo de inicializador que intenta crear nuevas tablas con datos de prueba? Estoy usando EF6 e intento crear un par de tablas con algunos datos de prueba, pero la base de datos se está creando, pero ninguna de esas tablas sí lo está. – KBriz

+0

En global.asax. Y debe enviar una nueva pregunta en lugar de enviar una respuesta con una pregunta: obtendrá respuestas más rápidas de esa manera. –

Cuestiones relacionadas