Śledziłem kilka przykładów (w tym takich książek jak „Pro ASP.NET MVC 3” i „Professional ASP .NET MVC 3 ") do tworzenia prostych aplikacji ASP.NET MVC 3 przy użyciu EF 4.1 (ponieważ jestem nowy w tych technologiach).„Obiekt o tym samym kluczu już istnieje w ObjectStateManager ...” jest wyjątek podczas ustawiania w stan podmiotu do zmodyfikowanej
ja za pomocą następującego składu (pojedynczy przypadek jest wykorzystywany przez wszystkie metody działania sterownika), aby uzyskać dostęp do 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();
}
....
}
To repozytorium wykonuje aktualizację jak wykazano w przykładach Użyłem.
Klasa produktu:
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; }
}
W przypadku aktualizowania produktu, dostaję wyjątek „Obiekt o tym samym kluczu już istnieje w ObjectStateManager ObjectStateManager nie może śledzić wiele obiektów z tego samego. klawisz”
wiem, że podobne pytania zostały już omówione tutaj, ale moje pytanie jest nieco inny:
Dlaczego ten kod która została podjęta z exampl es nie działa (chociaż wygląda całkiem prosto i prosto)? Cóż złego mogłem zrobić lub coś przeoczyłem.
Mam ten sam błąd przy użyciu domyślnego rusztowania, który ustawia się Visual Studio dla ciebie i nie były w stanie żeby to rozgryźć. –