Нашел, что я должен сделать,
Поскольку я использую SqlServer в качестве хранилища данных, RowVersion имеет тип timestamp.
Так что мне пришлось сделать следующую конфигурацию
mapping
.Version(prop => prop.Version)
.CustomSqlType("timestamp") /// => add sql type
.Generated.Always()
.Not.Nullable();
И измените тип версии на байт []
public Entity
{
public virtual byte[] Version{get;}
}
Это работает. Он автоматически сгенерирует метку времени.
Итак, если вы используете другие хранилища данных (например, Oracle), вы должны проверить, какой тип управления версиями, никогда не работал с любой другой реляционной БД, поэтому я не уверен в этом, но это стоит попробовать.
Обновление:
с использованием соглашений об автоматическом сопоставлении вместо создания сопоставления IAutoMappingOverride
public class VersionConvetion : IVersionConvention
{
public void Apply(IVersionInstance instance)
{
instance
.CustomSqlType("timestamp");
instance
.Generated.Always();
instance
.Not.Nullable();
}
}
Тогда зарегистрируйте его
/// => configure mappings, conventions, etc
configuration
.Mappings(map => map.AutoMappings
.Add(AutoMap.AssemblyOf<Entity>(new AutomappingConfiguration())
.Conventions.Setup(config =>
{
config.Add<VersionConvetion>();
})));