2011-06-08 129 views
8

我工作的EF代碼第一個網站,我已經寫了我的課和上下文類的來源是:EF代碼首先不產生表

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

該項目構建罰款,但是當我去運行該站點時,數據庫中沒有創建任何表,並且我得到一個錯誤,指出數據庫無法找到我嘗試訪問的任何上下文對象,可能是因爲代碼首先沒有生成任何必要的表。

任何想法爲什麼它根本不會生成任何表格,並且不給我任何類型的錯誤信息?

+0

在web中。配置你應該命名您的連接字符串完全像您的上下文類 – 2011-06-08 15:43:38

+0

如何生成數據庫? EF不會單獨創建表--EF總是必須創建整個數據庫。 – 2011-06-08 15:44:26

+0

這實際上取決於。如果是SQLCe,那麼它會自行創建它 – 2011-06-08 15:46:06

回答

7

你有初始化策略嗎?

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

從你訂閱它聽起來就像你自己創建了數據庫。那麼你需要指定一個初始化策略,否則沒有表/數據將被添加到數據庫中,查詢數據庫將導致一個異常:{「指定的表不存在。[sometable]」}

+0

現貨!這解決了問題。謝謝。 – Tim 2011-06-08 22:01:54

+0

這行是否必須包含在global.asax文件或試圖用測試數據創建新表的初始化文件中?即時通訊使用EF6並試圖創建一些表中的一些測試數據,數據庫正在創建,但沒有任何表。 – KBriz 2014-04-28 19:18:07

+0

在global.asax中。你應該提交一個新的問題,而不是提交一個答案和一個問題:你會得到更快的方式。 – 2014-04-30 11:52:13