user3051461
user3051461

Reputation: 41

WCF EF return as list

Hi I got the error when return EF as the list. Here are my codes.

WCF

Public Function GetMerchantList() As List(Of Merchant) Implements IMerchant.GetMerchantList
                Dim ws As New aMerchantService.MerchantServiceClient

                Dim General As New General
                Dim kWSUrl As String = ""

                Dim endpointAddress = ws.Endpoint.Address

                Dim newEndpointAddress As New EndpointAddressBuilder(endpointAddress)
                kWSUrl = General.ConvertWsURL("App")

                newEndpointAddress.Uri = New Uri(kWSUrl & "MerchantService.svc")
         ws = New aMerchantService.MerchantServiceClient("BasicHttpBinding_IMerchantService", newEndpointAddress.ToEndpointAddress())
                Dim Data = ws.GetMerchantList()

      Return Data
End Function

Merchant Class

Public Function GetMerchantList() As List(Of Merchant)
                Dim Db As New TTMSEntities
                Dim Data = (From p In Db.TT_MERCHANT Join r In Db.TT_BRANCH_SETTING On _
                           p.MERCHANT_BRANCH_INTERNAL_NUM Equals r.INTERNAL_NUM _
                           Select New Merchant With {.MerchantID = p.MERCHANT_ID,
                                                     .MerchantName = p.DESCRIPTION,
                                                     .BranchID = r.INTERNAL_NUM,
                                                     .BranchName = r.BRANCH_DESC})

                If Data IsNot Nothing Then
                    Return Data.ToList
                Else
                    Return Nothing
                End If
 End Function

The error is Error Value of type '1-dimensional array of TTMS.App.WebSites.Data.Merchant' cannot be converted to 'System.Collections.Generic.List(Of TTMS.Web.WebSites.WCF.Merchant)'.

Please help. Thanks

Upvotes: 0

Views: 736

Answers (1)

Tim
Tim

Reputation: 28520

It looks like you're using a service reference. By default, WCF will serialize generic lists as arrays. To override this behavior, when you go to add the service reference, click on the Advanced button at the bottom left corner. This will bring up the Service Reference Settings. Select System.Generics.List for the collection type (the default is System.Array):

enter image description here

Upvotes: 2

Related Questions