0

如果这是一个新手问题,我很抱歉,但我是 C# 编程的新手。

但是我正在尝试编写一个 WCF 数据服务,它可以读取数据并吐出一个 odata 提要。我在 VS 中添加了服务引用,它为我创建了服务类型和数据模型,但我似乎缺少一个SaveChanges()方法(我看到在一堆教程中被调用。)

这导致我IUpdatable,目前停止兔子洞。当有人说“您的服务不支持更新,因为它没有实现IUpdatable.”时,这是什么意思。如何实现这个接口?实现这个接口意味着什么?

此外,这适用于 Windows Phone 应用程序。

4

3 回答 3

1

如果问题不是客户端上缺少 SaveChanges 方法(上面马克的回答应该解决),并且您已经创建了一个应该支持读写访问的服务,那么您可能需要实现 IUpdatable 接口(在服务器上) .

如果您的服务使用 EF 提供程序,那么这应该已经可以工作,因为 EF 提供程序实现了开箱即用的 IUpdatable。

如果您的服务使用反射提供程序,那么您将需要在您的上下文中实现 IUpdatable。这里有一些描述:http: //msdn.microsoft.com/en-us/library/dd723653.aspx

如果您使用的是自定义提供程序,那么您还需要实现 IUpdatable 并且也有示例,但我认为您不会走这条路 :-)

于 2012-08-13T14:19:07.120 回答
1

由于 Windows Phone 7 基于 Silverlight,因此需要异步,因此SaveChanges上下文中没有方法,而是一个BeginSaveChangesEndSaveChanges方法对。你可以这样称呼他们:

private void SaveChanges_Click(object sender, RoutedEventArgs e)
{
    // Start the saving changes operation.
    svcContext.BeginSaveChanges(SaveChangesOptions.Batch, 
        OnChangesSaved, svcContext);
}

private void OnChangesSaved(IAsyncResult result)
{
    // Use the Dispatcher to ensure that the 
    // asynchronous call returns in the correct thread.
    Dispatcher.BeginInvoke(() =>
        {
            svcContext = result.AsyncState as NorthwindEntities;

            try
            {
                // Complete the save changes operation and display the response.
                WriteOperationResponse(svcContext.EndSaveChanges(result));
            }
            catch (DataServiceRequestException ex)
            {
                // Display the error from the response.
                WriteOperationResponse(ex.Response);
            }
            catch (InvalidOperationException ex)
            {
                messageTextBlock.Text = ex.Message;
            }
            finally
            {
                // Set the order in the grid.
                ordersGrid.SelectedItem = currentOrder;
            }
        }
    );
}

该示例来自http://msdn.microsoft.com/en-us/library/gg521146(VS.92).aspx

于 2012-08-12T23:43:28.017 回答
0

IUpdatable 在这里由它的设计者描述: WCF 数据服务博客:IUpdatable & ADO.Net DataServices Framework

于 2013-04-17T02:03:58.770 回答