When using Enum as PK in a RowVersioned table, the SELECT statement to check RowVersion fails because of INT to STRING conversion:
"SELECT \"RowVersion\" FROM \"TypeWithEnumAsStringAsPk\" WHERE \"Id\" = @0"
Repro:
using System.Linq;
using NUnit.Framework;
using ServiceStack.DataAnnotations;
namespace ServiceStack.OrmLite.SqlServerTests
{
public class EnumTests : OrmLiteTestBase
{
[Test]
public void CanUseRowVersionOnEnumAsStringAsPk()
{
using (var con = OpenDbConnection())
{
con.CreateTable<TypeWithEnumAsStringAsPk>(true);
// works
con.Insert(new TypeWithEnumAsStringAsPk { Id = SomeEnum.Value_1 });
// fails
con.Save(new TypeWithEnumAsStringAsPk { Id = SomeEnum.Value2 });
}
}
}
public enum SomeEnum
{
Value_1,
Value2,
Value3
}
public class TypeWithEnumAsStringAsPk
{
[PrimaryKey]
public SomeEnum Id { get; set; }
[Default(typeof(bool), "0")]
public bool IsDeleted { get; set; }
[RowVersion]
public byte[] RowVersion { get; set; }
}
}