0

我对使用其中一种产品进行迁移非常感兴趣,但不仅在数据库中,而且在文件系统等中。

我最初的想法是我很想阅读 Application.ProductVersion 但它返回一个字符串但大多数迁移需要一个 LONG 或类似的?

我不知道是否有人这样做,但我的想法是拥有 2 个不同版本的迁移。

1 迁移产品,即更改目录或文件系统中的内容等我将使用 Application.ProductVersion

  1. 迁移数据库,我将使用我认为来自字段的数据库版本号?

有人这样用吗?

有什么想法可以支持这样的产品吗?

我的迁移并不总是特定于数据库,但有时特定于应用程序。

目前的工作方式似乎每个新版本都必须是一个整数,即 1、2、3、4 等......并且不考虑次要、修订等。

期待任何见解

谢谢

4

2 回答 2

0

MigratorDotNet 不要求版本号是连续的(实际上,他们当前的建议是使用格式为 long 的时间戳)。因此,如果您确定主要版本永远不会包含超过两位数,次要版本永远不会包含超过四位,并且内部版本号和修订号永远不会包含超过五位数字,您可以将其组合成一个长。例如,2.34.1023.86 将变为 0200340102300086。如果您的下一个版本是 2.42.0.2 (0200420000000002),迁移引擎将处理该问题。虽然感觉有点像 hack(尽管我喜欢),但它应该可以创建一个单独的程序集,其中包含实际操作文件系统等的“迁移”。但是,你' d 可能需要一个单独的数据库来包含 MigratorDotNet 用来跟踪应用版本的 SchemaInfo 表。类似的黑客攻击可能适用于其他迁移产品。

于 2011-03-07T14:41:10.000 回答
0

在 MigSharp 中,您还可以选择使用 long 作为时间戳。因此,Aasmund 的建议也适用于 Mig#。在 Mig# 的 2.1 版中,您可以选择完全自定义时间戳格式(只要您可以从中计算出 long)。

因此,如果在任何给定时刻(即数据库版本),您的文件系统和数据库模式应该是什么样子的定义状态,那么您可以使用迁移框架并让迁移执行文件系统和/或数据库上需要的任何内容. 如果您只想在一次迁移中更改文件系统,请执行此操作。在这种情况下,数据库将仅更新以保存最新的迁移版本号。

于 2012-11-28T13:24:28.133 回答