相关疑难解决方法(0)

在生产中使用Entity Framework(代码优先)迁移

我只是考虑将EF迁移用于我们的项目,特别是在发布之间的生产中执行模式更改.

我已经看到提到有一个API可以在运行时使用DbMigration该类执行这些迁移,但我找不到任何具体的示例.

理想情况下,我希望DbMigration每个数据库更改一个文件,并在应用程序启动时自动应用这些更改从当前版本到最新版本.

.net entity-framework ef-code-first ef-migrations

63
推荐指数
3
解决办法
4万
查看次数

种子方法未调用,实体框架6

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的DatabaseContext类中,我设置了初始化程序

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

private void InitializeDatabase()
{
    Database.SetInitializer(new DatabaseInitializer());
    if (!Database.Exists())
    {
        Database.Initialize(true);
    }            
}
Run Code Online (Sandbox Code Playgroud)

据我所知,只有在执行查询等操作时才会调用种子方法.我的数据库已成功创建,我正在查询表,但从不调用种子方法.

更新:

似乎问题是由于inheriting我的DatabaseContext类中的类引起的,当使用此类执行数据库操作时,不会调用种子方法.使用我的DatabaseContext课程时,一切都按预期工作

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

protected override void OnModelCreating(DbModelBuilder …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework

12
推荐指数
3
解决办法
2万
查看次数