我有一个 Customer 表,我通过 Entity Framework 将记录插入其中。该表有一个整数主键 (custid)。在将客户记录添加到上下文之前,我正在查询数据库以获取使用的最后一个键,然后将 custid 设置为高于该值的一个。
但是,在查询和将新记录保存到数据库之间,另一个客户端可能会使用该 custid 存储一条记录,因此当我调用 SaveChanges() 时,由于现在是重复值,我会收到异常。
我的计划是将 SaveChanges() 调用放在 try{} 块中,捕获异常,然后再将 saleid 增加一,然后再试一次。
我不确定如何更改 custid 的值,因为它已经被添加到上下文中。我的代码是这样的:
CUSTOMER myCustomer = new CUSTOMER();
myCustomer.FirstName = "John";
myCustomer.LastName = "Smith";
myCustomer.Custid = GetLastCustid() + 1;
myContext.CUSTOMERS.Add(myCustomer);
bool SavedOK = false;
while (!SavedOK)
{
try
{
myContext.SaveChanges();
SavedOK = true;
}
catch (DBUpdateException e)
{
if (IsCustidConflict(e))
{
// Increment Custid by one
// How do I do that?????
continue;
}
}
}