Я пытаюсь заменить объект новым и получаю упомянутое исключение. Я пробовал несколько комбинаций и не могу обойтись.
У меня есть плейлист, в котором есть Предметы (у Предметов есть другой вложенный объект, но я опускаю его, чтобы сделать мой вопрос более понятным. Пользователь может изменить, какие предметы находятся в плейлисте.
if (playlistChanged)
{
// remove selectedForRemoval
IEnumerable<PlaylistItemViewModel> nonSelectedItems = selectedDisplayTemplates.Where(pivm => pivm.IsSelectedForRemoval);
foreach (temViewModel ivm in nonSelectedItems)
{
context.DeleteObject(ivm.Model);
}
// clear out and remove old items
foreach (Item item in playlist.PlaylistItems)
{
context.DeleteObject(item);
}
playlist.PlaylistItems.Clear();
// add the selectedItem(s) to the playlist
// these items can be from the Media, or other tables
// so are newly created in code on the client
foreach (ItemViewModel ivm in selectedItems)
{
playlist.Items.Add(ivm.PlaylistItemModel);
context.AddToItems(ivm.PlaylistItemModel);
}
context.BeginSaveChanges(SaveChangesOptions.Batch, new AsyncCallback((iar) =>
{
try
{
// Callback method for the async request, retrieves the status of the requested action
DataServiceResponse response = context.EndSaveChanges(iar);
}
catch (DataServiceRequestException)
{
throw;
}
}), context);
}
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: я переопределил Equals и ToString в частичном классе плейлиста. После того, как я удалил их, он начал работать.