我有一个带有“版本”字段的表,每个表必须有唯一的值(可能是序列)。行更新时,版本值必须更新。
我使用的是Fluent NHibernate和SQLite。
请注意,Version字段为整型。当我为版本使用datetime类型时,一切都是正常的,因为它对于每个表都是唯一的。当使用int类型时,它是每行唯一的。
this.Version(x => x.Version).Column("Version");发布于 2011-09-13 14:12:51
如果您不使用version列作为“版本”,就像NHibernate定义它一样,那么您应该将它映射为一个属性,并为NHibernate版本控制使用不同的列。
您可以创建一个触发器,用insert上的序列值填充您的列,并按如下方式映射它:
Map(x => x.Version).Column("Version")
.Generated.Insert()
.Not.Insert()
.Not.Update();发布于 2011-09-13 14:29:58
我认为如果你的Version变成了一个LastModified DateTime,你的Revision方法将会变得更加清晰,而且很明显,版本在整个表中不可能是唯一的。
如果您没有访问序列的权限,那么在db中获取DateTime.UtcDate或调用相同的函数可能比在db中处理自动增量唯一函数更容易。
如果这将满足您的需求,我认为它更容易编程比触发器版本,我也喜欢。也就是说,我不认为我们可以使用FluentNHibernate来映射这样的行为。
https://stackoverflow.com/questions/7385701
复制相似问题