Я следовал некоторым примерам (включая такие книги, как "Pro ASP.NET MVC 3" и "Professional 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 не может отслеживать несколько объектов с одним и тем же ключом "
Я знаю, что подобные вопросы уже обсуждались здесь, но мой вопрос немного отличается:
Почему этот код , который был взят из примеров , не работает (хотя выглядит довольно просто и понятно)?Что плохого я мог сделать или что-то упустил.