当我尝试使用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;}
...
我这样做是因为:
- 这是一个分布式应用程序,需要打电话回家-因此向导
- 这是一个旧数据的导入,用户更容易引用int而不是guid(至少对于他们的特定位置),他们会想继续前进
- 我使用ContactId作为一个FK到其他表,其数据不打电话回家的性能原因
我认为,如果一个属性有[AutoIncrement]
,并且该值与该类型的默认值匹配,那么它将假定该值未设置。
编辑
现在我只是恢复使用ContactId作为PK和身份,并添加唯一标识符与唯一检查约束
在OrmLite中,[AutoIncrement]
属性用于指定自动递增主键。因此,它不能用于非主键列