2011-02-18 5 views
8

Je ne parviens pas à utiliser le code EF First pour travailler avec SQL Server 2008 R2. L'erreur que j'obtiens est "Nom d'objet invalide 'dbo.Movies'."EF Code First CTP 5 et SQL SErver 2008 R2

Il ne crée pas la table automatiquement.

Ma chaîne de connexion:

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

Mon modèle et classe contexte:

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

Toute aide serait grandement appréciée.

Répondre

4

J'oublie si elle est activée par défaut, mais essayez de définir dans votre Application_Start (assez sûr ce n'est pas)

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

Ce n'était pas le cas dans ma méthode Application_Start, mais cela ne semblait pas fonctionner. – Cliffboss

+0

Vérifiez que la table existe déjà et si elle existe déjà, vous devez vous assurer que les noms des tables correspondent. (Ou supprimez la table et laissez EF la construire pour vous) sinon il nous manquera quelque chose comme la méthode ci-dessus, lorsqu'elle est appelée dans Application_Start fonctionnerait. – Buildstarted

+0

Je suis retourné et j'ai refait une grande partie du tutoriel que j'ai suivi + a fait ce que tu as suggéré et ça marche maintenant. Cheers. – Cliffboss

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

espère que cela aide

+0

Cela ne l'a pas empêché de fonctionner. – Cliffboss

1

Heres ma configuration actuelle (Reboucher avec votre détails):

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

Et puis j'ai suivi avec cela dans le public TI TLEContext()

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

A pris un couple tente, mais mettre un point d'arrêt sur l'un de vos charges et vérifier les entités du contexte. Il devrait avoir une optiont o voir la chaîne de connexion de base de données ...

bonne chance!