2011-02-18 16 views
8

Parece que no puedo obtener el EF Code First para trabajar con SQL Server 2008 R2. El error que obtengo es "Nombre de objeto inválido 'dbo.Movies'."EF Code First CTP 5 y SQL SErver 2008 R2

No está creando la tabla automáticamente.

Mi cadena de conexión:

<add name="MovieDBContext" connectionString="Server=(local); Database=Movies; Trusted_Connection=true; Integrated Security=True" providerName="System.Data.SqlClient" />

Mi modelo y contexto de clase:

public class Movie 
{ 
    public int ID { get; set; } 

    [Required(ErrorMessage = "Title is required")] 
    public string Title { get; set; } 

    [Required(ErrorMessage = "Date is required")] 
    public DateTime ReleaseDate { get; set; } 

    [Required(ErrorMessage = "Genre must be specified")] 
    public string Genre { get; set; } 

    [Required(ErrorMessage = "Price Required")] 
    [Range(1, 100, ErrorMessage = "Price must be between $1 and $100")] 
    public decimal Price { get; set; } 

    [StringLength(5)] 
    public string Rating { get; set; } 

} 

public class MovieDBContext : DbContext 
{ 
    public DbSet<Movie> Movies { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Movie>().Property(p => p.Price).HasPrecision(18, 2); 
    } 
} 

sería muy apreciada Cualquier ayuda.

Respuesta

4

me olvido de si está habilitado por defecto, pero intente configurar esta en su Application_Start (bastante seguro de que no es)

System.Data.Entity.Database.DbDatabase.SetInitializer<MovieDBContext>(new CreateDatabaseIfNotExists<MovieDBContext>()); 
+0

Eso no fue eso en mi método Application_Start, pero no pareció hacerlo funcionar. – Cliffboss

+0

Comprueba si la tabla ya existe y si ya existe, entonces debes asegurarte de que los nombres de las tablas coincidan. (O elimine la tabla y deje que EF la cree); de lo contrario, nos falta algo ya que el método anterior, cuando se llama en Application_Start, funcionaría. – Buildstarted

+0

Volví y rehice mucho del tutorial que seguí + hice lo que sugirió y ahora funciona. Saludos. – Cliffboss

0
protected override void OnModelCreating(ModelBuilder modelBuilder) { 
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 

creo que sirve

+0

Esto no lo hizo funcionar. – Cliffboss

1

Aquí está mi configuración actual (recoloque las tapas con su detalles):

 <connectionStrings> 
     <add name="TITLEContext" connectionString="metadata=res://*/Models.TITLE.csdl|res://*/Models.TITLE.ssdl|res://*/Models.TITLE.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=DATASOURCE;Initial Catalog=DATABASE;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

Y luego seguí con esto en Public TI TLEContext()

DbDatabase.SetInitializer(new DropCreateDatabaseIfModelChanges<TITLEContext>()); 

tomó un par de intentos, pero poner un punto de interrupción en una de sus cargas y comprobar las entidades del contexto. Debe tener una opción o ver la cadena de conexión de la base de datos ...

¡buena suerte!

Cuestiones relacionadas