Hi,
I obtain the error "Collection was modified; enumeration operation may not
execute." when I try to save (merge)
a loaded entity.
I use AutoMapper to write the values from the DTO (command) to the loaded
entity and this method to synchronize
the collection between the entity and the command:
public static ICollection<TFirst> Synchronize<TFirst, TSecond>(
this ICollection<TFirst> first,
IEnumerable<TSecond> second,
Func<TSecond, TFirst> convert = null,
Func<TFirst, int> firstHash = null,
Func<TSecond, int> secondHash = null)
{
if (firstHash == null)
{
firstHash = x => x.GetHashCode();
}
if (secondHash == null)
{
secondHash = x => x.GetHashCode();
}
if (convert == null)
{
convert = x => Mapper.Map<TFirst>(x);
}
var firstCollection = first.ToDictionary(x => firstHash(x), x => x);
var secondCollection = second.ToDictionary(x => secondHash(x), x => x);
var toAdd = secondCollection.Where(item => firstCollection.All(x =>
x.Key != item.Key)).Select(x => convert(x.Value));
foreach (var item in toAdd)
{
first.Add(item);
}
var toRemove = firstCollection.Where(item => secondCollection.All(x =>
x.Key != item.Key));
foreach (var item in toRemove)
{
first.Remove(item.Value);
}
return first;
}
How can I fix the problem?
Thanks,
Matteo
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.