"Un objet avec la même clé existe déjà dans ObjectStateManager ..." exception est levée lors de la définition d'un état d'entité à modifier

J'ai suivi quelques exemples(y compris des livres tels que "Pro ASP.NET MVC 3" et "Professionnel ASP.NET MVC 3") pour créer simple ASP.NET MVC 3 applications à l'aide d'EF 4.1 (depuis que je suis nouveau à ces technologies).

Je suis en utilisant la suite du dépôt(seule instance de il est utilisé par toutes les méthodes d'action de la manette) pour accéder à la DB:

public class ProductRepository : IProductRepository
    {
        private readonly EFDbContext _context = new EFDbContext();

        #region Implementation of IProductRepository       

       ....

        public void SaveProduct(Product product)
         {           
            if (product.ProductId == 0)
            {
                _context.Products.Add(product);
            }
            else
            {
                _context.Entry(product).State = EntityState.Modified;

            }

            _context.SaveChanges();
        }

....
}

Ce référentiel effectue la mise à jour comme cela est montré dans les exemples que j'ai utilisés.

Classe de produit:

public class Product
    {       
        public int ProductId { get; set; }       
        public string Name { get; set; }      
        public string Description { get; set; }     
        public decimal Price { get; set; }
        public string Category { get; set; }
}

En cas de mise à jour du produit, je suis d'être l'exception "d'Un objet avec la même clé existe déjà dans le Vousmanager. Le Vousmanager ne peut suivre plusieurs objets avec la même clé"

Je sais que les questions similaires ont été déjà discuté ici, mais ma question est un peu différente:

Pourquoi ce code qui a été prise à partir d'exemples ne fonctionne pas (même si ça à l'air assez simple et directe)? Quel mal pourrais-je avoir fait ou oublié quelque chose.

source d'informationauteur andrew