簡體   English   中英

首次使用EF6 Code First運行應用程序時播種數據庫的問題

[英]Issues with seeding database upon first running an application using EF6 Code First

我最近升級到Entity Framework 6,它似乎破壞了數據庫的種子。

DataContext.cs

public class DataContext : DbContext
{
     public DbSet<BlogSettings> BlogSettings { get; set; } 
}

DataContextInitializer.cs

public class DataContextInitializer : CreateDatabaseIfNotExists<DataContext>
{
    protected override void Seed(DataContext context)
    {
        var blogSettings = new BlogSettings()
        {
            BlogTitle = "My Blog",
            MaxBlogsOnHomepageBeforeLoad = 20
        };

        context.BlogSettings.Add(blogSettings);
        context.SaveChanges();
    }
}

注意:種子有更多的數據庫集和代碼,但是看起來都和上面的版本完全一樣。

我通過MS SQL Server中的數據庫創建並創建了一個用戶。 我添加了連接字符串。 然后,我去運行Web應用程序,這將導致生成表,但是我得到了:

已為上下文“ DataContext”啟用了遷移,但是數據庫不存在或不包含映射表。 使用遷移來創建數據庫及其表,例如,通過從程序包管理器控制台中運行“ Update-Database”命令。

我在Configuration.cs _MigrationHistory遷移設置為false,並且沒有_MigrationHistory表。

Configuration.cs的構造方法

public Configuration()
{
    AutomaticMigrationsEnabled = false;
}

我在web.config文件中對此進行了初始化: <add key="DatabaseInitializerForType DataContext, Test" value="DataContextInitializer, Test" />

我曾嘗試將其添加在<entityFramework><contexts>和我還試圖在初始化它Global.asax.cs無濟於事。

Database.SetInitializer(new DataContextInitializer());
using (var context = new DataContext())
{
    context.Database.Initialize(true);
}

最近,我們通過AssemblyInfo.cs添加了一個在所有其他類之前運行的類,該類在初始化程序有機會運行之前進行調用。

暫無
暫無

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

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