1
Vote

Problem with EndEdit in ViewModelDetailBase

description

Hi Tony
 
I’ve created a WPF application that uses Entity Framework against the Northwind database. I’ve come across a problem when editing a single entity that inherits from ViewModelDetailBase, specifically when calling the EndEdit method.
 
For the benefit of other readers, in CopyValuesTo<T>(this T source, T dest) [which gets called from EndEdit], the code first gets a list of all of the entity’s properties. In this case the entity is a Product (as created from the Northwind database by EF) and it contains the Category navigation property. The code then loops round the list of the Product’s properties and effectively makes a copy. However, when it gets to the Category navigation property an exception is raised (“An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.”).
 
My guess here is that this is because Category is a navigation property of the Product entity rather than a data property? If this is the case is extra filtering needed to exclude this property from the list?
 
Apologies that this is somewhat convoluted - I hope all this make sense!
 
Cheers - Graham

comments

GrahamDSmith wrote Jun 2, 2011 at 6:55 AM

Hi Tony

Just wondered if you'd had time to look at this.

Cheers - Graham

tonysneed wrote Feb 28, 2012 at 8:15 PM

Sorry it's taken forever for me to get to this. With EF you would either use the EF-generated classes or POCO's which inherit from ModelBase, not ViewModelDetailBase.