2013-09-24 81 views
1

我是MVC的新手,現在我正試圖解決Galloway J和其他人在專業Asp.Net MVC 4中演示的示例,在這個示例中我必須做的以下內容:實體框架不會在localdb中創建數據庫

  1. 創建3類:專輯,流派,藝術家稱爲MusicStoreDB
  2. 創建一個控制器調用它門店經理
  3. 創建的DbContext類。
在我使用MVC控制器讀取腳手架選項

/寫操作和視圖,使用實體框架

我還設置一個初始值重新創建數據庫總是在應用程序啓動

,但運行時,解決方案沒有創建數據庫,可能是什麼問題,我已經嘗試了很多建議,甚至重新安裝SQL Server 2008 R2和VS 2012,但它不起作用。

這是Global.asax文件

Imports System.Web.Optimization 
Imports System.Data.Entity 

Public Class MvcApplication 
    Inherits System.Web.HttpApplication 

    Sub Application_Start() 
     AreaRegistration.RegisterAllAreas() 
     Database.SetInitializer(Of MusicStoreDB)(New DropCreateDatabaseAlways(Of MusicStoreDB)()) 
     WebApiConfig.Register(GlobalConfiguration.Configuration) 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters) 
     RouteConfig.RegisterRoutes(RouteTable.Routes) 
     BundleConfig.RegisterBundles(BundleTable.Bundles) 
     AuthConfig.RegisterAuth() 
    End Sub 
End Class 

和MusicStoreDB類

Imports System.Data.Entity 

Public Class MusicStoreDB 
    Inherits DbContext 

    Public Property Albums() As DbSet(Of Album) 
     Get 
     End Get 
     Set(value As DbSet(Of Album)) 
     End Set 
    End Property 

    Public Property Genres() As DbSet(Of Genre) 
     Get 
     End Get 
     Set(value As DbSet(Of Genre)) 
     End Set 
    End Property 

    Public Property Artists() As DbSet(Of Artist) 
     Get 
     End Get 
     Set(value As DbSet(Of Artist)) 
     End Set 
    End Property 
End Class 

回答

0

確保您的DbContext指定正確的連接字符串:

public class MyNewContext : DbContext 
{ 
    public MyNewContext() : base("DefaultConnection") 
    { 

    } 

    public DbSet<Genre> Genres { get; set; } 
    public DbSet<Artist> Artists { get; set; } 
    public DbSet<Song> Songs { get; set; } 
} 

它是由DefaultConnection默認值,但如果是y,請確保將其更改爲MusicStoreDB你想使用你的新連接字符串。到目前爲止,我已將我的默認設置保留下來,並毫不費力地部署到Azure。

您應該能夠在新項目中使用實體框架,而無需設置任何新的連接字符串。它使用SQL Express「正常工作」。

我敢打賭,你有一個數據庫存在,如果你連接到SSMS或其他地方的(localdb)\v11.0

如果您仍然有問題,請發佈您的global.asax和DbContext。

+0

它不適合我,但我發佈了global.asax和MusicStoreDB類 –

+0

您在調試網站時是否收到錯誤消息,或者您是否僅僅報告自己找不到數據庫?有一個區別,目前它很重要。請發佈一個特定的錯誤。你剛剛告訴我你正在使用錯誤的連接字符串,所以我不認爲你正在尋找正確的SQL實例。 – Guttsy

+0

我的sql服務器上只有一個實例是默認的實例,我找不到SQLEXPRESS實例 –

0

所以我今天面對同樣的問題,事實證明,我推測EF會自動檢查應用程序是否啓動數據庫是否存在;至少我的希望是有抱負的。

只有在調用數據庫上下文後,EF纔會創建數據庫。例如,當您第一次運行應用程序時,如果在着陸頁上沒有實例化數據庫上下文,則不會發生任何事情。

對於音樂商店示例,如果您正在關注本書,請導航到(使用您自己的端口號當然)「http://localhost:34295/StoreManager」,如果您一直關注本書,則控制器的操作應該實例化DBContext。

希望這有助於任何像我一樣迷失的人!

相關問題