entity-framework - 使用 HasData 仅在 OnModelCreating(...) 内迁移时播种数据
问题描述
我正在使用实体框架创建维度时间模型,并且希望仅在进行迁移时播种数据。但是,每次在运行时初始化我的数据库上下文时,该代码也会运行。无论如何使用新推荐的播种方案来避免这种情况?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Only run as part of a command-line migration, not app runtime
List<TimeModel> timeModels = SeedTimeModel(new DateTime(2019, 01, 01), new DateTime(2021, 12, 31));
modelBuilder.Entity<TimeModel>().HasData(timeModels);
}
我只希望在发出以下命令时运行它:
dotnet ef migrations add InitialCreate
dotnet ef database update
一切似乎都按预期工作,我只想避免每次加载应用程序时性能受到影响。我曾考虑尝试在我的应用程序中设置一个全局变量,假设在运行迁移时不会设置它。然后我可以使我在OnModelCreating(...)中的逻辑有条件。我想知道是否有更清洁的方法。
解决方案
推荐阅读
- python - AttributeError:“Ui_MainWindow”对象没有属性“btn_click”
- scala - {} 块如何表示 scala 中的函数?
- json - 使用 React-Native 从 JSON 中提取数据
- php - 使用带有 Twig 和表单扩展的独立 Symfony4 表单组件
- angular - 如果我在动画的完成事件中更改状态名称,则状态不适用
- ruby-on-rails - Rails 5.1 和地理编码器:SSL_connect 返回=1 errno=0 状态=错误:证书验证失败
- c# - 重复使用内存中的数据,而不是执行新的 sql 查询
- swift - AVFoundation 会话问题
- python - 动态数组的 Python 实现的内存大小不会增加
- java - 检索三星 Galaxy S9 的所有者信息