如果更新每个表一个序列的行,则更新版本字段

时间:2011-09-12 09:21:52

标签: .net nhibernate sqlite fluent-nhibernate

我有“Version”字段的表,每个表必须具有唯一值(可能是序列)。行更新时必须更新版本值。

我正在使用Fluent NHibernate和SQLite。

请注意,Version字段是整数类型。当我使用datetime类型的版本时,一切都很好,因为每个表都是唯一的。 使用int类型时,每行都是唯一的。

this.Version(x => x.Version).Column("Version");

2 个答案:

答案 0 :(得分:1)

如果您不像NHibernate定义的那样使用版本列作为“版本”,您应该将其映射为属性并使用不同的列进行NHibernate版本控制。

您可以创建一个触发器,使用insert上的序列值填充列,并按如下方式映射:

Map(x => x.Version).Column("Version")
   .Generated.Insert()
   .Not.Insert()
   .Not.Update();

答案 1 :(得分:0)

我认为,如果您的Version成为LastModified DateTime,那么您的Revision方法会更加明确,而且很明显,版本在整个版本中并不是那么独特表

如果您无法访问序列,那么在db中获取DateTime.UtcDate或调用相同的函数比在db中处理自动增量唯一函数更容易。

如果这符合您的需求,我认为编程比触发版本更简单,我也喜欢。这就是说我不认为我们可以使用FluentNHibernate映射这样的行为..