J'utilise EF5 avec un modèle de référentiel générique et ninject pour l'injection de dépendances et je rencontre un problème lorsque j'essaie de mettre à jour une entité dans la base de données en utilisant des procs stockés avec mon edmx.
ma mise à jour dans DbContextRepository.cs est :
public override void Update(T entity)
{
if (entity == null)
throw new ArgumentException("Cannot add a null entity.");
var entry = _context.Entry<T>(entity);
if (entry.State == EntityState.Detached)
{
_context.Set<T>().Attach(entity);
entry.State = EntityState.Modified;
}
}
Dans mon AddressService.cs qui renvoie à mon référentiel j'ai :
public int Save(vw_address address)
{
if (address.address_pk == 0)
{
_repo.Insert(address);
}
else
{
_repo.Update(address);
}
_repo.SaveChanges();
return address.address_pk;
}
Quand il atteint l'attachement et EntityState.Modified il vomit avec l'erreur :
Un objet avec la même clé existe déjà dans l'ObjectStateManager. L'ObjectStateManager ne peut pas suivre plusieurs objets avec la même clé.
J'ai examiné de nombreuses suggestions dans la pile et sur Internet et je n'ai rien trouvé qui permette de résoudre le problème. Toute solution de contournement serait appréciée.
Merci !