2011-02-18 137 views
8

我似乎無法讓EF Code First與SQL Server 2008 R2一起工作。我收到的錯誤是「無效的對象名稱'dbo.Movies'」。EF Code First CTP 5和SQL SErver 2008 R2

它不會自動創建表格。

我的連接字符串:

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

我的模型和上下文類:

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

任何幫助將非常感激。

回答

4

我忘了,如果它在默認情況下啓用,但嘗試設置這個你Application_Start(敢肯定它不是)

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

這不是在我的Application_Start方法,但它似乎並沒有使它的工作。 – Cliffboss 2011-02-22 20:39:00

+0

檢查它是否已經存在,如果它已經存在,那麼你需要確保表名匹配。 (或者刪除表並讓EF爲你構建),否則我們會在上面的方法中失去一些東西,當在Application_Start中調用時會起作用。 – Buildstarted 2011-02-22 21:09:02

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

希望它有助於

1

繼承人我的當前設置(與替換帽您詳細資料):

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

然後我在Public TI中跟進了這個TLEContext()

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

接受了幾次嘗試,但在您的一個加載中放了一個斷點並檢查了上下文的實體。它應該有一個選項Ø看到數據庫連接字符串...

祝你好運!