【发布时间】:2017-11-06 08:20:58
【问题描述】:
我有一个这样的存储库项目。
https://github.com/tugberkugurlu/GenericRepository/tree/master/src
我有一个方法。
public void Edit(TEntity entity)
{
_dbContext.SetAsModified(entity);
}
public void SetAsAdded<TEntity>(TEntity entity) where TEntity : class
{
DbEntityEntry dbEntityEntry = GetDbEntityEntrySafely(entity);
dbEntityEntry.State = EntityState.Added;
}
但是我正在更新记录。我有时会收到此错误。
附加“TP.Model”类型的实体失败,因为 另一个相同类型的实体已经具有相同的主键 价值。使用“附加”方法或设置 如果实体中有任何实体,则实体的状态为“未更改”或“已修改” 图有冲突的键值。这可能是因为某些实体 是新的,尚未收到数据库生成的键值。在 这种情况下使用 'Add' 方法或 'Added' 实体状态来跟踪 图表,然后将非新实体的状态设置为“未更改”或 酌情“修改”。
【问题讨论】:
-
看了一遍又一遍,不明白有问题。
-
调试您的上下文 dbset
Local集合...如果它已经包含具有您的 ID 的实体,那么您的代码可能会失败。但是,您没有显示足够的代码,因此我们无法确定问题所在。 -
我已经添加了完整的代码链接@grek40
-
不,您需要添加代码的使用方式,而不仅仅是存储库的设计方式。因为存储库的退出方式意味着,如果您以错误的方式使用它,您将收到此错误。
标签: entity-framework entity-framework-6