【发布时间】:2020-07-26 13:33:54
【问题描述】:
我们希望以编程方式确保数据库表具有特定的行集(基于有时变化的枚举)。我们正在使用带有代码优先迁移的 EF Core 2.2,并且正在寻找合适的位置来播种这些数据。我们曾认为向我们的Startup.cs 添加播种方法是个好主意,但微软的documentation 说
种子代码不应成为正常应用执行的一部分,因为这可能会在多个实例运行时导致并发问题,并且还需要应用具有修改数据库架构的权限。
Startup.cs 中的代码是否被视为“正常应用执行的一部分”?
我们的应用目前只运行 1 个实例,但未来可能会有多个。此外,我们还有一个 Azure Functions 应用程序和一个控制台应用程序,它们可能还需要确保数据库表在执行之前具有正确的行。尽管有这些担忧,但我看到answers on other threads 被接受和支持,说作为Startup.cs 的一部分进行初始化是可以的。我们这样做会不会自取其辱?
【问题讨论】:
-
如果您的枚举经常更改,最好将其作为表存储在数据库中,或者作为 k/v 存储在键值表中。
标签: asp.net-core .net-core entity-framework-core entity-framework-core-2.2