我用VB.net在VS2012與.NET框架4.0參數類型的代理生成的類不匹配WCF服務
我有4個項目:
- DataAccessTier(包含數據集定義)
- DataEntityTier(用於數據集強類型的TableAdapter)
- 的DataService(WCF服務暴露的合同)
- 客戶端(使用生成的代理類消費服務)
我在服務定義合同
Function SetCustomers(data As CustomersDataTable) As Integer Implements IService.SetCustomers
Using a = New CustomersTableAdapter
SetCustomers = a.Update(data)
End Using
End Function
Function SetOrders(data As OrdersDataTable) As OrdersDataTable Implements Service.SetOrders
Using a = New OrdersTableAdapter
a.Update(data)
End Using
Return data
End Function
Public Function GetOrders() As OrdersDataTable Implements IService.GetOrders
Return (New OrdersTableAdapter).GetData()
End Function
數據表和對象的TableAdapters指DataEntityTier組件。所有Data *項目都有IData名稱空間。
好吧然後我添加引用到客戶端服務,與重用類型。代理類被產生,這裏是結果:
<System.ServiceModel.OperationContractAttribute(Action:="http://tempuri.org/IService/SetCustomers", ReplyAction:="http://tempuri.org/IService/SetCustomersResponse")> _
Function SetCustomers(ByVal data As IData.DS.CustomersDataTable) As Integer
<System.ServiceModel.OperationContractAttribute(Action:="http://tempuri.org/IService/GetOrders", ReplyAction:="http://tempuri.org/IService/GetOrdersResponse")> _
Function GetOrders() As IData.DS.OrdersDataTable
<System.ServiceModel.OperationContractAttribute(Action:="http://tempuri.org/IService/SetOrders", ReplyAction:="http://tempuri.org/IService/SetOrdersResponse")> _
Function SetOrders(ByVal data As IData.DS.CustomersDataTable) As IData.DS.OrdersDataTable
一切都很好,期待SetOrders(數據截至IData.DS CustomersDataTable。)! 這個問題是在我使用類型化數據表作爲參數的每種方法中,代理始終使用CustomersDataTable。
但是,當我從合同返回它時,它序列化正確的GetOrders函數。
如果我手動更正代理類,它工作正常,但是當我更新服務引用時,我失去了更改。
PS。如果我刪除重用類型每個函數返回一個對象xxxResponse(es GetOrdersResponse),我不知道如何使用它:S