私は汎用リポジトリを持っています:
public class GenericRepository<TEntity> : AbstractRepository<TEntity>, IRepository<TEntity> where TEntity : class
{
private DbContext _context;
[...]
public GenericRepository(DbContext context)
{
_context = context;
context.Configuration.AutoDetectChangesEnabled = true;
_dbSet = _context.Set<TEntity>();
}
[...]
public void SaveChanges()
{
_context.SaveChanges();
}
[...]
public void Add(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
_dbSet.Add(entity);
}
[...]
public virtual void Update(TEntity entity)
{
_context.Entry(entity).State = EntityState.Modified;
}
私のコントローラーには、次のコードがあります。
[HttpPost]
public ActionResult Edit(Project project)
{
if (ModelState.IsValid)
{
if (project.Id == 0)
{
ProjectRepository.Add(project);
}
else
{
ProjectRepository.Update(project);
}
ProjectRepository.SaveChanges();
[...]
選択と挿入は正常に機能しますが、更新は機能しません: InvalidOperationException が発生します (ドイツ語のエラー メッセージの英語訳は、「オブジェクト ステート マネージャーに同じキーを持つオブジェクトが既に存在します。オブジェクト ステート マネージャーは、同じキーを持つ複数のオブジェクトを追跡できません。鍵。")。
私は開発マシンの唯一のユーザーであり、別の場所でレコードを変更していないため、それがわかりません。
ここで何が間違っているのか分かりますか?