c# - 未调用种子方法, Entity Framework 6

标签 c# entity-framework

我有一个 DatabaseInitializer

public class DatabaseInitializer : CreateDatabaseIfNotExists<DatabaseContext>
{
    protected override void Seed
        (
        DatabaseContext databaseContext
        )
    {
        // Seed the hash methods.
        var defaultHashMethod = new HashMethod
        {
            Description = "Default",
            CreateDate = DateTime.Now
        };

        databaseContext.HashMethod.Add(defaultHashMethod);

        databaseContext.SaveChanges();
    }
}

在我的 DatabaseContext 类中我设置了初始化器

public DatabaseContext() : base("DatabaseContext")
{
    InitializeDatabase();
}

private void InitializeDatabase()
{
    Database.SetInitializer(new DatabaseInitializer());
    if (!Database.Exists())
    {
        Database.Initialize(true);
    }            
}

据我所知,seed 方法只会在您执行查询等操作时调用。我的数据库已成功创建,我正在查询表,但从未调用过 seed 方法。

更新:

问题似乎是因为一个类inheriting 从我的DatabaseContext 类引起的,当使用这个类执行数据库操作时,seed 方法不是叫。使用我的 DatabaseContext 类时,一切都按预期工作

public DbSet<TestEntity> TestEntity { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

最佳答案

您需要从 Package Manager Console 调用 Update-Database

关于c# - 未调用种子方法, Entity Framework 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524238/

相关文章:

c# - WPF - 单击按钮时设置焦点 - 无代码隐藏

c# - 如何在 EF 中指定左连接?

c# - 属性id是对象关键信息的一部分,不可修改

c# - 将联合查询转换为 LINQ 到实体查询

c# - MSTest 失败 : Failed to find configuration section 'log4net' in the application's . 配置文件

c# - 尝试使用通用的 <T> 集合

c# - 如何在继承类的规范中包含基类的规范?

c# - 如何在 DevExpress XtraCharts 中显示动态标记?

c# - DbSet 查找总是返回 null

java - 用于数据库实体管理和 View 的管理 UI?