2013-04-12 32 views
0

我嘗試了所有現有問題中提到的解決方案,但它們都不適用於我。當我運行我的應用程序(運行時沒有錯誤),並檢查SQLExpress數據庫(通過SQL Management Studio)時,我可以看到沒有從我的Code First類生成的表。無法獲得EF代碼首先在SQL Server Express 2012上工作

這裏是我的連接字符串:

<add name="BSContext" connectionString="Data Source=.\SQLEXPRESS; Integrated Security=SSPI; Initial Catalog=BSDomain; MultipleActiveResultSets=True" providerName="System.Data.SqlClient" /> 

我在Win 8 Pro的64倍,並且使用VS 2012與SQL Express的2012年沿着這是我的BSContext代碼:

public class BSContext : DbContext 
{ 
    public DbSet<Event> Events { get; set; } 
    public DbSet<Location> Locations { get; set; } 
    public DbSet<Author> Authors { get; set; } 
} 

而且在我的application_start()我有以下內容:

Database.SetInitializer<BSContext>(new EventInitializer()); 

而且EventInitializer的代碼如下s:

public class EventInitializer : DropCreateDatabaseAlways<BSContext> 
{ 
    protected override void Seed(BSContext context) 
    { 
     // Seed Code 
    } 
} 

仍然不起作用。

+1

你的派生DbContext如何命名?它必須和你的連接名稱BSContext相同 - 或者確保你沒有在構造函數中定義連接/名稱(比如':base(「...」)'),這很可能是連接問題。你的EF/CF使用了一個,你認爲這是另一回事。 – NSGaga

+0

擴展問題和更多信息 – Ciwan

+0

你的.config?提供程序,工廠,數據庫初始化程序等有什麼其他內容 – NSGaga

回答

0

事實證明,那只是因爲我使用以下格式爲我的ID字段:

private int AuthorID { get; set; } 

當我應該一直在使用:

private int AuthorId { get; set; } 

所有的作品吧!

0

嘗試將此添加到Global.asax中的Application_Start()方法。

System.Data.Entity.DropCreateDatabaseAlways<BSContext>()); 

這將迫使應用程序來創建數據庫每次你運行應用程序的時間,所以不要將它留在有明顯!

+0

已擴大。正如你所看到的,我有初始化類的DropCreateAlways。 – Ciwan