sql server语言 - ServiceStack标识字段不是PK -插入失败



当我尝试使用ServiceStack中的"Insert"函数(针对SQL Server 2014)使用下面类中的对象时,它试图为ContactId插入一个0 (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. 这是一个分布式应用程序,需要打电话回家-因此向导
  2. 这是一个旧数据的导入,用户更容易引用int而不是guid(至少对于他们的特定位置),他们会想继续前进
  3. 我使用ContactId作为一个FK到其他表,其数据不打电话回家的性能原因

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

编辑

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

在OrmLite中,[AutoIncrement]属性用于指定自动递增主键。因此,它不能用于非主键列

最新更新