sql和c#

时间:2015-05-29 15:10:32

标签: c# sql version-control sqlanywhere revision-history

在这个问题中,我想了解一下,在sql中控制数据版本的最佳实践是什么。我们正在使用关系数据库(Sybase SAP Sql Anywhere)。问题是,我们不知道我们应该在哪一层软件中实现版本控制系统。我们希望编写一个通用系统,以便版本控制可用于所有类型的数据,每种类型的工作量很少(类型:联系人,约会,......)。

以下是我们想出的选项: 1.使用实体框架并计算两个模型的差异。然后将差异保存到数据库 2.使用触发器和comapre旧数据和新数据,并将它们保存在单独的表中 3.使用证明更改的程序并将它们保存在单独的表中

我知道这是一个非常普遍的问题,但也许有人对我们的问题有一个好主意和解决方案。

修改

重要提示:我想创建数据本身的版本,而不是sql架构或某些sql代码。

EDIT2

让我们使用以下简单示例。我有一个很小的联系表(不是我们真正的联系表):

CREATE TABLE Contact
(
    "GUID" Uniqueidentifier NOT NULL UNIQUE,
    "ContactId" BIGINT NOT NULL Identity(1,1),
    "Version" INTEGER NOT NULL,
    "FirstName" VARCHAR(100),
    "LastName" VARCHAR(200),
    "Address" VARCHAR(400),
    PRIMARY KEY (ContactId, Version)
);

不,每当某人对联系人对象进行更改时,我都想保存它的新版本。但我正在寻找一个通用的解决方案。这必须针对每种类型实施。

谢谢!

2 个答案:

答案 0 :(得分:1)

作为一个生活和呼吸数据库源代码控制的人(DBmaestro令人惊叹的团队的一员),我可以推荐两种方法的组合,具体取决于你如何运行delta。

  1. 使用触发器,您应该保存部署所需的所有信息(如果使用缓慢更改维度或整个表格内容)
  2. 使用分析差异的程序并知道生成相关的增量脚本

答案 1 :(得分:1)

我们遇到了同样的问题,并尝试通过存储我们想要遵循的每个实体的版本和分支ID来解决它。 在另一个表中,我们将版本与其前任版本ID存储在一起,因此我们可以跟踪分支在哪里相遇。 我们有一个带有版本号的审计跟踪。

我想知道这是否具有您需要的相同元素(ed),以及自您的问题和上一次编辑以来您是否已提升。

感谢您建议合并唯一ID和版本号