Я последовал за некоторыми примерами (включая такие книги, как "Pro ASP.NET MVC 3" и "Профессиональный ASP.NET MVC 3" ) для создания простых приложений ASP.NET MVC 3 с использованием EF 4.1 (поскольку я новичок в этих технологии).
Я использую следующий репозиторий (один экземпляр его используется всеми методами действий контроллера) для доступа к БД:
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();
}
....
}
Этот репозиторий выполняет обновление, как показано в примерах, которые я использовал.
Класс продукта:
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; }
}
В случае обновления продукта я получаю исключение "Объект с тем же ключом уже существует в ObjectStateManager. ObjectStateManager не может отслеживать несколько объектов с одним и тем же ключом
Я знаю, что подобные вопросы уже обсуждались здесь, но мой вопрос немного другой:
Почему этот код , который был взят из примеров, не работает (хотя он выглядит довольно простым и понятным)? Что бы я не сделал или что-то пропустил.