2014-02-20 75 views
0

我一直在嘗試在過去幾周內混合成功構建網站,而今天突然間我的數據庫不會播種。我的數據庫不會先使用實體​​框架代碼種子

我確實添加了另一個類,並向我的DatabaseInitialiser.cs文件添加了一些更多的數據,所以我從我讀過的內容中推測出這導致了一些問題。

一切似乎運行良好,但數據庫表是空的。

我正在運行Visual Studio Express 2013 for Web。

確定這裏的代碼,讓我知道如果我忘記了任何東西。任何幫助被長久地感謝:-)

的Global.asax.cs:

// Code that runs on application startup 
RouteConfig.RegisterRoutes(RouteTable.Routes); 
BundleConfig.RegisterBundles(BundleTable.Bundles); 

// Initialize the product database. 
Database.SetInitializer(new DatabaseInitialiser()); 

DatabaseInitialiser.cs:

public class DatabaseInitialiser : DropCreateDatabaseAlways<YPGOOSDataContext> 
{ 
    protected override void Seed(YPGOOSDataContext context) 
    { 
     GetCategories().ForEach(c => context.Categories.Add(c)); 
     GetProducts().ForEach(p => context.Products.Add(p)); 
     GetSizes().ForEach(s => context.Sizes.Add(s)); 
     GetQuantityBreaks().ForEach(q => context.QuantityBreaks.Add(q)); 
     GetStyles().ForEach(st => context.Styles.Add(st)); 
     GetStocks().ForEach(sto => context.Stocks.Add(sto)); 
    } 

    private static List<Category> GetCategories() 
    { 
     var categories = new List<Category> { 
      new Category 
      { 
       CategoryID = 1, 
       ...etc 

YPGOOSDataContext.cs:

namespace YPGOOS2.Models 
{ 
    public class YPGOOSDataContext : DbContext 
    { 
     public YPGOOSDataContext() : base("YPGOOS2") {} 

     public DbSet<Category> Categories { get; set; } 
     public DbSet<Style> Styles { get; set; } 
     public DbSet<Product> Products { get; set; } 
     public DbSet<Size> Sizes { get; set; } 
     public DbSet<QuantityBreak> QuantityBreaks { get; set; } 
     public DbSet<Stock> Stocks { get; set; } 
    } 
} 
+0

沒有人有任何想法嗎? – skella

+0

我已經使用上面的代碼構建了一個新的解決方案,並在Global.asax.cs文件的Application_Start方法中包括以下兩行:var ctx = new myDataContext(); ctx.Database.Initialize(假);在運行這最後一行我得到以下錯誤:類型'System.Data.DataException'的異常發生在EntityFramework.dll中,但沒有在用戶代碼中處理。附加信息:初始化數據庫時發生異常。有關詳細信息,請參閱InnerException。 InnerException是模糊的,只是說EntityFramework驗證失敗。 – skella

回答

0

呼叫context.SaveChanges()後你完成了...

protected override void Seed(YPGOOSDataContext context) 
{ 
    GetCategories().ForEach(c => context.Categories.Add(c)); 
    GetProducts().ForEach(p => context.Products.Add(p)); 
    GetSizes().ForEach(s => context.Sizes.Add(s)); 
    GetQuantityBreaks().ForEach(q => context.QuantityBreaks.Add(q)); 
    GetStyles().ForEach(st => context.Styles.Add(st)); 
    GetStocks().ForEach(sto => context.Stocks.Add(sto)); 

    context.SaveChanges(); 
} 
+0

嗨安東尼,不幸的是,沒有任何區別。 – skella

0

好的我終於在2.5天的搜索和調試後找到了答案。有兩件事是錯的。 1.當播種這樣的數據時var stocks = new List {new Stock {StockID = 1,等等我把var股票當作var股票,我認爲這是導致一些問題。 2.在添加最後一隻股票後,我有一個最後的股票。這沒有拋出任何錯誤,它表現正常,但沒有種子數據庫!

相關問題