我正在尝试用新的对象替换一个对象并且我得到了提到的异常。我已经尝试了几种组合,无法绕过它。
我有一个包含项目的播放列表(这些项目有另一个嵌套对象,但我将其留下来以帮助我更清楚地解决问题。用户可以更改播放列表中的项目。
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。我删除它后,它开始工作。
答案 0 :(得分:1)
我在Silverlight中重写了播放列表部分类中的Equals和ToString。我删除它后,它开始工作。从现在开始,我将避免使用WCF数据服务。
答案 1 :(得分:0)
如果您使用与您尝试添加/删除的上下文不同的上下文获取数据,则会收到您发布的异常。处理您获取数据的原始上下文,或者在您调用AddItem / DeleteObject的项目上显式调用Detach。