Windows phone 7 在windows phone上通过odata添加实体时不支持异常

Windows phone 7 在windows phone上通过odata添加实体时不支持异常,windows-phone-7,odata,Windows Phone 7,Odata,我正在WindowsPhone7应用程序中使用odata客户端生成器(datasvcuti.exe)。检索实体和集合与更新现有实体一样好。但是当我尝试添加一个新实体时,会得到一个NotSupportedException。这是我的密码 private void Button_Click(object sender, RoutedEventArgs e) { Drinks d =new Drink(); d.BarCode = "1234567890";

我正在WindowsPhone7应用程序中使用odata客户端生成器(datasvcuti.exe)。检索实体和集合与更新现有实体一样好。但是当我尝试添加一个新实体时,会得到一个NotSupportedException。这是我的密码

private void Button_Click(object sender, RoutedEventArgs e)
    {
        Drinks d =new Drink();
        d.BarCode = "1234567890";
        d.Description = "Test Drink";
        d.Quantity = -1;
        context.AddToDrinks(d);
        context.BeginSaveChanges(SaveChangesOptions.Batch, OnChangesSaved, context);       
    }

 private void OnChangesSaved(IAsyncResult result)
    {
        Dispatcher.BeginInvoke(() =>
        {
            try
            {
                var something = result.AsyncState;

                context = result.AsyncState as DrinkTrackerModelContainer;

                // Complete the save changes operation and display the response.

                ShowSaveResponse("Drink Logged!", context.EndSaveChanges(result));
            }
            catch (DataServiceRequestException ex)
            {
                ShowSaveResponse("Error Logging Drink", ex.Response);

            }
            catch (InvalidOperationException ex)
            {
                ShowSaveResponse(ex.Message, null);

            }

        }
        );
    }
只要调用EndSaveChanges,我就会得到

不支持例外

编辑:我使用了fiddler,发现我实际上从服务中得到了一个不同的异常。调试器中未显示该异常数据。一旦我纠正了实际的异常,插入工作正常。



我认为您已经打开了第一次机会异常,这导致客户端库抛出的内部异常作为异常出现。尝试关闭VS中“Exceptions”(例外)菜单中的First Chance Exception(首次机会例外)并运行应用程序。

正如您在编辑中提到的,NotSupportedException(不支持例外)是一种误导。我认为,在调试手机应用程序时,即使已清除设置以在未处理的CLR异常上中断,您也会遇到NotSupportedException

如果继续(F5),您将遇到实际的DataServiceRequestException异常。如果没有足够的信息进行调试,您可以按照本文中的步骤在异常中获取更详细的信息:


昨天我遇到了同样的问题,在遵循博客中的步骤之后,我成功地调试了这个问题

嗨,Kenstone,在调试器中,它显示的是代码中最后一个执行的导致引发异常的语句?它发生在showsaveress(“Drink Logged!”,context.EndSaveChanges(result));啊,是的,我在找你提到的EndSaveChanges。如果我用find的话我会找到它的。