我有一个带有自动增量列的sql表,我设置了身份增量= 1。 我用peta poco课程添加我的记录如下:
[Scope("ProductID")]
[TableName("TblColors"]
[PrimaryKey("ProductColorID", AutoIncrement = true)]
[Cacheable("ProductColorInfo", CacheItemPriority.Default, 20)]
public class ProductColorInfo
{
public int ProductColorID { get; set; }
public int ProductID { get; set; }
public int ColorID { get; set; }
public string Name { get; set; }
public string Caption { get; set; }
public string ImageName { get; set; }
public float Cost { get; set; }
}
public int AddColor(ProductColorInfo item)
{
using (IDataContext ctx = DataContext.Instance())
{
try
{
ctx.BeginTransaction();
var rep = ctx.GetRepository<ProductColorInfo>();
rep.Insert(item);
// get last Color ID from a stored procedure
var LastID = ctx.ExecuteScalar<int>(System.Data.CommandType.StoredProcedure, "spGetLastRecordID", "ProductColorID");
if (LastID < 1)
throw new Exception("Can not Get Last ProductColorID");
ctx.Commit();
return LastID ;
}
catch
{
ctx.RollbackTransaction();
return -1;
}
}
}
效果很好。但当我检查我的表时,有时我的自动增量列“ProductColorID”,增加超过1.我知道如果我删除一些记录,我将有差距。但是ProductColorID之间的增加不仅仅是一些已删除的记录。我的意思是如果我的最后一个ProductColorID是120,下次我添加一条记录时,新的ProductColorID变为100065! 我确定我从未添加100065记录然后删除它们。 它发生了几次,我找不到时间,地点和原因?
我的自动标识列有什么问题?