向我的数据库添加帖子时遇到问题,这个“添加”函数是从多个线程调用的。而且通常在彼此之后很快,我不知道这是否重要,但这就是它的工作方式。
代码:
private object dbLock = new object();
public void Add(string fileName, DateTime collectionTime)
{
try
{
lock (dbLock)
{
var collection = new Collection
{
Filename = fileName,
Datetime = collectionTime,
};
_entities.AddToCollection(collection);
_entities.SaveChanges();
CollectionChanged(collection, null);
}
}
catch (Exception ex)
{
}
finally
{
}
}
我的问题是,当 SaveChanges 被调用时,我得到了这个异常:
对数据库的更改已成功提交,但在更新对象上下文时出错。ObjectContext 可能处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
我设法找到的所有答案都与您必须添加的有关StoreGeneratedPattern="Identity"
,我已经这样做了,但这无济于事
<Property Name="ID" Type="integer" Nullable="false" StoreGeneratedPattern="Identity" />
那么还有其他方法可以解决这个问题吗?