gpt4 book ai didi

c# - 在同一数据库上使用多个 FluentMigrator 程序集

转载 作者:行者123 更新时间:2023-11-30 20:25:00 27 4
gpt4 key购买 nike

假设我在同一个数据库中有两个独立的表,表 Book 和 Cup。我只使用称为 Id 的主键 (int) 创建两者。然后,为了保持整洁,我将它们分成不同的项目并为两者创建 FluentMigrations,它们将驻留在 Book.Migrations.dllCup.Migrations.dll 中。

现在我意识到也许我的书应该可以有一个名字,并创建一个新的迁移来添加一个名为 name 的列。我将此版本设置为 201408111220(因此是撰写本文时的时间戳),并将其命名为 AddNameToBook。我应用此迁移并相应更新数据库。

然后我意识到也许杯子应该有颜色。因此,我在另一个项目中创建了一个版本为 201408111221 的新迁移,并将其命名为 AddColorToCup。我再次运行迁移,数据库已更新。

据我所知,目前一切正常。我不确定的是,如果我现在向 Book 添加另一个迁移,比如 201408111224,应用它,然后尝试回滚。由于现在来自另一个程序集的版本 201408111221 存在于 VersionInfo 表中,FluentMigrator 将如何处理它?它会在我面前抛出一个错误,还是忽略该行,因为当前程序集对此一无所知?

也欢迎其他有关以这种方式使用 FluentMigrator(一个数据库有多个程序集)的评论。

最佳答案

我不推荐这种方法。回滚或向上迁移时,保存在 VersionInfo 表中的迁移版本将与 FluentMigrator 程序集中的迁移版本不匹配。如果运气不好,这会崩溃。

如果你想有两个独立的项目,那么你需要两个 VersionInfo 表。其中一个项目可以使用默认的 VersionInfo 表,但另一个项目必须创建一个自定义表。参见 here on how to create custom meta data for the VersionInfo table .

对于 FluentMigrator,这与拥有两个数据库相同。这种方法在与模式结合使用时很常见。在您的示例中,您将在数据库中创建 Book 架构和 Cup 架构,并将它们彼此分开。

根据我的经验,大多数数据库都不够大,不足以证明这种额外开销是合理的,但如果您有成百上千次迁移,那么您绝对应该将其划分到不同的项目中(并将您的数据库划分到不同的模式中)。

关于c# - 在同一数据库上使用多个 FluentMigrator 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25239992/

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