在下表中,您可以看到billid
列在第10行增加了1000。
生成新的bill
的代码如下:
private void NewBill()
{
var bill = new Bill
{
BillDate = DateTime.Now,
InUse = true,
Paid = false,
TableId = _tableId,
UserId = frmLogIn.LoggedInUserId
};
using (var context = new Context())
{
context.Bills.Add(bill);
context.SaveChanges();
}
}
为什么它不能仅增加1?
我正在将EF6与SQL Server 2017 Express版一起使用。
答案 0 :(得分:0)
这可能是由于各种原因所致,如@CodingYoshi指出的here所述。为避免此类不幸,您可以选择生成最后一个BillId,并通过将最后一个BillId乘以1进行放大,从而生成几乎可以确定是连续的BillId。
您可以编写如下功能
public int NextId()
{
int lastId = 0;
var billsFromStore = _context.Bills;
if (billsFromStore.Any())
{
var idsFromStore = _context.Bills.Select(x => x.BillId);
lastId = idsFromStore.Max();
}
return ++lastId;
}
您可能想使用lock statement来防止不同的线程递增值