我有“Version”字段的表,每个表必须具有唯一值(可能是序列)。行更新时必须更新版本值。
我正在使用Fluent NHibernate和SQLite。
请注意,Version字段是整数类型。当我使用datetime类型的版本时,一切都很好,因为每个表都是唯一的。 使用int类型时,每行都是唯一的。
this.Version(x => x.Version).Column("Version");
答案 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映射这样的行为..