gpt4 book ai didi

entity-framework - 用于开发和生产的不同种子

转载 作者:行者123 更新时间:2023-12-04 17:32:21 24 4
gpt4 key购买 nike

根据构建配置(调试/发布),使用 Entity Framework (6+) 以不同方式为数据库播种的推荐方法是什么?

现在我正在使用 MigrateDatabaseToLatestVersion 初始值设定项。在开发过程中,我喜欢在我的数据库中使用假数据进行测试。所以我在 Configuration 类的 Seed 方法中创建了这个测试数据(启用代码优先)。但是,每次我通过构建服务器发布产品时,我都必须在我的种子方法中注释大量代码,提交这些代码,创建发布,然后撤消所有注释以继续使用测试数据进行开发。

我想这不是要走的路。所以我希望你能告诉我正确的方法。

最佳答案

有很多可能性

  • 预处理器指令

  • 一个就像你和 Gert Arnold 已经谈过的那样,使用 #if DEBUG :
    protected override void Seed(BookService.Models.BookServiceContext context)
    {
    #if DEBUG
    context.Authors.AddOrUpdate(x => x.Id,
    new Author() { Id = 1, Name = "Test User" },
    );
    #else
    context.Authors.AddOrUpdate(x => x.Id,
    new Author() { Id = 1, Name = "Productive User" },
    );
    #endif
    }
  • 配置

  • 另一种方法是在 appsettings.json 中进行配置,也许您想使用 development-data 设置应用程序,您可以添加类似
    { "environment" : "development" }

    并在种子中检查:
    protected override void Seed(BookService.Models.BookServiceContext context)
    {
    var builder = new ConfigurationBuilder();
    builder.AddInMemoryCollection();
    var config = builder.Build();

    if (config["environment"].Equals("development"))
    {
    context.Authors.AddOrUpdate(x => x.Id,
    new Author() { Id = 1, Name = "Test User" },
    );
    }
    else if (config["environment"].Equals("producion"))
    {
    context.Authors.AddOrUpdate(x => x.Id,
    new Author() { Id = 1, Name = "Productive User" },
    );
    }
    }
  • 环境变量( asp net core 的解决方案)

  • (另见 https://docs.asp.net/en/latest/fundamentals/environments.html)

    您可以添加环境变量

    enter image description here
    后来通过DI:
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    if (env.IsDevelopment())
    {
    SeedDataForDevelopment();
    }
    }

    关于entity-framework - 用于开发和生产的不同种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131577/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com