簡體   English   中英

我的數據庫不會先使用實體​​框架代碼進行播種

[英]my database won't seed using entity framework code first

在過去的幾周中,我一直在嘗試建立網站的過程中取得了喜人的成績,但今天突然間,我的數據庫無法播種。

我確實添加了另一個類,並向我的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; }
    }
}

完成后調用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();
}

好的,經過2.5天的搜索和調試,我終於找到了答案。 有兩件事是錯誤的; 1.在像這樣播種數據時,var stocks = new List {new Stock {StockID = 1,依此類推。我將var stocks作為var Stocks,我認為這會引起一些問題。 2.添加最后一個股票時,我在最后一個}之后有一個。 這沒有引發任何正常的錯誤,只是沒有為數據庫播種!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM