PK 以外的字段上的 ServiceStack 标识 - 插入失败

ServiceStack Identity on field other than PK - Insert fails

当我尝试在 ServiceStack 中使用 "Insert" 函数(针对 SQL Server 2014)时,使用下面的对象 class,它会尝试插入一个 0(默认为ContactId 属性) 作为 ContactId 而不是在数据库中自动生成一个。 ContactId 是 IDENTITY NOT NULL。 ContactId 是聚集索引,但 GlobalContactId 是非聚集主键。

[Alias("Contact")]
[Schema("Customer")]
public partial class Contact
{
    [PrimaryKey]
    public Guid GlobalContactId { get; set; }
    [AutoIncrement]
    public int ContactId { get; set;}
     ...

我这样做是因为:

  1. 这是一个分布式应用程序,需要 phone 主页 - 因此 guid
  2. 这是旧数据的导入,用户更容易引用 int 而不是 guid(至少对于他们的特定位置),他们将希望继续前进
  3. 我将 ContactId 用作其他表的 FK,这些表的数据由于性能原因 phone 没有归属

我原以为如果 属性 有 [AutoIncrement] 并且该值与该类型的默认值相匹配,那么它会假定该值未设置。

编辑

现在我只是恢复使用 ContactId 作为 PK 和身份,并添加具有唯一检查约束的唯一标识符

在 OrmLite 中,[AutoIncrement] 属性用于指定一个自动递增的主键。所以它不能用于非主键列。