将SaveChangesOptions传递给BeginSaveChanges

时间:2014-03-13 00:38:26

标签: c# asynchronous asp.net-web-api odata async-await

我有一个非常简单的问题,因为我对这些OData的新东西很新:

如何在OData中使用BeginSaveChanges方法时传递SaveChangesOptions属性,这是我的代码和模式:

MoviesService.Container _proxy;

在构造函数中初始化_proxy,这是另一个代码:

private async void Save_Click(object sender, RoutedEventArgs e)
{
    await SaveAsych();
}

private Task<DataServiceResponse> SaveAsych()
{
    return Task.Factory.FromAsync<DataServiceResponse>(_proxy.BeginSaveChanges,
        _proxy.EndSaveChanges, null);
}

2 个答案:

答案 0 :(得分:2)

  

使用BeginSaveChanges时如何传递SaveChangesOptions属性   OData中的方法

使用lambdas:

private Task<DataServiceResponse> SaveAsych(SaveChangesOptions options)
{
    return Task.Factory.FromAsync<DataServiceResponse>(
         (asyncCallback, asyncState) =>
             _proxy.BeginSaveChanges(options, asyncCallback, asyncState),
         (asyncResult) =>
             _proxy.EndSaveChanges(asyncResult), null);
}

答案 1 :(得分:0)

如果您收到委托类型错误,请确保使用正确的命名空间:

private Task<Microsoft.OData.Client.DataServiceResponse> SaveAsych(Microsoft.OData.Client.SaveChangesOptions options)
    {
        return Task.Factory.FromAsync<Microsoft.OData.Client.DataServiceResponse>(
             (asyncCallback, asyncState) =>
                 c.BeginSaveChanges(options, asyncCallback, asyncState),
             (asyncResult) =>
                 c.EndSaveChanges(asyncResult), null);
    }