2011-02-18 26 views
8

Nie mogę uzyskać kodu EF najpierw do pracy z SQL Server 2008 R2. Otrzymuję błąd "Niepoprawna nazwa obiektu" dbo.Movies "."Kod EF Najpierw CTP 5 i SQL SErver 2008 R2

Nie tworzy ona automatycznie tabeli.

Moje ciąg połączenia:

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

Mój model i kontekst klasa:

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

Każda pomoc będzie mile widziane.

Odpowiedz

4

zapomnę jeśli jest domyślnie włączona, ale spróbuj ustawić to na swój Application_Start (całkiem pewny, że nie jest)

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

To nie było tak w mojej metodzie Application_Start, ale wydawało się, że nie działa. – Cliffboss

+0

Sprawdź, czy tabela już istnieje i jeśli już istnieje, upewnij się, że nazwy tabel są zgodne. (Lub usuń tabelę i pozwól EF ją zbudować dla ciebie) w przeciwnym razie czegoś nam brakuje, jak powyższa metoda, gdy zostanie wywołana w Application_Start, zadziała. – Buildstarted

+0

Wróciłem i zredagowałem dużo tutoriala, który zrobiłem + wykonałem to, co sugerowałeś i teraz działa. Pozdrawiam. – Cliffboss

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

nadzieję, że pomoże

+0

To nie sprawiło, że praca więdła. – Cliffboss

1

Herezje moja obecna konfiguracja (zastąpić czapki z telefonem szczegóły):

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

A następnie śledziłem to w publicznej TI TLEContext()

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

wziąłem kilka prób, ale umieścić punkt przerwania na jednym ze swoich obciążeń i sprawdzić podmioty kontekście za. Powinien mieć opcję, aby zobaczyć ciąg połączenia z bazą ...

Powodzenia!

Powiązane problemy