2012-04-17 41 views
3

我試圖運行初始化代碼,它沒有運行。下面是我在main方法實體框架代碼優先:使用控制檯應用程序初始化數據庫

static void Main(string[] args) 
    { 
     Database.SetInitializer<Context>(new RecipesSeedData()); 

    } 

我應該把東西在其他主要讓它運行下面的代碼 ?當我在調試器中遍歷代碼時,甚至沒有看到初始化代碼,這讓我覺得我錯過了一些重要的東西。

public class RecipesSeedData : DropCreateDatabaseAlways<Context> 
{ 
    protected override void Seed(Context context) 
    { 
     var mt = new MenuType {MenuTypeId = 1}; 

     context.MenuTypes.Add(mt); 

     base.Seed(context); 
    } 
} 

回答

7

您剛纔告訴EF即初始化數據庫時,它需要使用初始化但你沒有告訴它實際初始化數據庫。當您在DbContext上執行一些操作時,數據庫將被初始化。這裏有一篇精彩的文章,描述了發生了什麼:http://blog.oneunicorn.com/2011/04/15/code-first-inside-dbcontext-initialization/(包括DbInitializers的詳細信息)

+0

好帖子!我一直在尋找這樣的東西。謝謝! – Robert 2012-04-17 04:25:03