none
Dúvida com ILIST dentro de um service com DataContracts RRS feed

  • Pergunta

  • Olá.

    Estou desenvolvendo um webService em vb.net no VS2010 e estou tento o seguinte problema:
    Value of type 'System.Collections.Generic.List(Of Produto.Entities.InfInscritos)' cannot be converted to 'Produto.Entities.InfInscritos'. C:\DEVNOVO\_Dependences\SebraeSAC.Integracoes\IntegracoesSAC.WS\Inscritos.svc.vb

    Eu entendi o erro, que não posso fazer essa conversão, porém não consigo resolver a situação. Sugestões são bem vindas. Segue o código abaixo:

    ''Esse é o meu Web Services
    Public Class Inscritos
        Implements IInscritos

        ''' <summary>
        ''' Retorna Pessoa Fisica
        ''' </summary>
        ''' <param name="cpf">Documento</param>
        ''' <returns></returns>
        ''' <remarks>
        ''' Por: Rodrigo Nikitin
        ''' Em: 19/00/12
        ''' </remarks>
        Public Function GetInscrito(ByVal DtInicial As DateTime, ByVal DtFinal As DateTime) As IntInscritosDC.InscritoDC Implements IInscritos.GetInscrito
            Try

                Dim model As IntInscritosDC.InscritoDC
                Dim bll As New Produto.Bussiness.ProdutoBussiness

                model = New IntInscritosDC.InscritoDC(bll.ConsultaInscritos(DtInicial, DtFinal))
                Return model

            Catch ex As ArgumentException
                Throw New FaultException(Of ArgumentException)(ex, New FaultReason(ex.Message), New FaultCode("ArgumentException"))
            Catch ex As Exception
                Throw New FaultException(Of Exception)(ex, New FaultReason(ex.Message), New FaultCode("Exception"))
            End Try

        End Function

    End Class


    ''Esse é o IInscritos.VB
    Imports System.ServiceModel
    Imports IntegracaoSAC.WS.IntInscritosDC

    ' NOTE: You can use the "Rename" command on the context menu to change the interface name "IInscritos" in both code and config file together.
    <ServiceContract()> _
    Public Interface IInscritos

        <OperationContract()> _
        Function GetInscrito(ByVal DtInicial As DateTime, ByVal DtFinal As DateTime) As IntInscritosDC.InscritoDC

    End Interface




    '' Esse é o Data Contracts
    Imports Produto.Entities
    Namespace IntInscritosDC
        ''' <summary>
        ''' Cliente para Envio de Ura
        ''' </summary>
        ''' <remarks></remarks>
        <DataContract()>
        Public Class InscritoDC

            Public Sub New()

            End Sub

            Public Sub New(ByVal model As Produto.Entities.InfInscritos)

                _IdPessoaFisica = model.IdPessoaFisica
                _CPF = model.CPF
                _NomePessoa = model.NomePessoa
                _NomeEmpresa = model.NomeEmpresa
                _Emaill = model.Emaill

            End Sub


            Private _IdPessoaFisica As Integer
            <DataMember()> _
            Public Property IdPessoaFisica() As Integer
                Get
                    Return _IdPessoaFisica
                End Get
                Set(ByVal value As Integer)
                    _IdPessoaFisica = value
                End Set
            End Property

            Private _CPF As Integer
            ''' <summary>
            ''' CPF
            ''' </summary>
            ''' <value></value>
            ''' <returns></returns>
            ''' <remarks></remarks>
            <DataMember()> _
            Public Property CPF() As Integer
                Get
                    Return _CPF
                End Get
                Set(ByVal value As Integer)
                    _CPF = value
                End Set
            End Property

            Private _NomePessoa As String
            ''' <summary>
            ''' NomePessoa
            ''' </summary>
            ''' <value></value>
            ''' <returns></returns>
            ''' <remarks></remarks>
            <DataMember()> _
            Public Property NomePessoa() As String
                Get
                    Return _NomePessoa
                End Get
                Set(ByVal value As String)
                    _NomePessoa = value
                End Set
            End Property

            Private _NomeEmpresa As String
            ''' <summary>
            ''' PessoaFisica
            ''' </summary>
            ''' <value></value>
            ''' <returns></returns>
            ''' <remarks></remarks>
            <DataMember()> _
            Public Property NomeEmpresa() As String
                Get
                    Return _NomeEmpresa
                End Get
                Set(ByVal value As String)
                    _NomeEmpresa = value
                End Set
            End Property

            Private _Emaill As String
            ''' <summary>
            ''' Emaill
            ''' </summary>
            ''' <value></value>
            ''' <returns></returns>
            ''' <remarks></remarks>
            <DataMember()> _
            Public Property Emaill() As String
                Get
                    Return _Emaill
                End Get
                Set(ByVal value As String)
                    _Emaill = value
                End Set
            End Property
        End Class
    End Namespace


    ''A Camada Bussiness
    Public Function ConsultaInscritos(ByVal DtInicio As DateTime, ByVal DtFim As DateTime) As List(Of Entities.InfInscritos)
            Try
                'Dim model As New Entities.InfInscritos
                Dim dal As New DataAccess.ProdutoDAL

                Return dal.SelecionarInscrito(DtInicio, DtFim)

            Catch ex As Exception

            End Try
        End Function

    ''A Camada DAL
     Public Function SelecionarInscrito(ByVal DtInicial As DateTime, ByVal DtFinal As DateTime) As List(Of Entities.InfInscritos)
            Try
                Dim model As New List(Of Entities.InfInscritos)
                Dim db As Database = DatabaseFactory.CreateDatabase(Conexao)
                Dim cmd As DbCommand = db.GetStoredProcCommand(PROC_PESQUISA_INSCRITOS)

                db.AddInParameter(cmd, PARAM_DATAINICIAL, DbType.DateTime, DbDataParser.ToDBNull(DtInicial))
                db.AddInParameter(cmd, PARAM_DATAFINAL, DbType.DateTime, DbDataParser.ToDBNull(DtFinal))

                Using idr As IDataReader = db.ExecuteReader(cmd)
                    While idr.Read()
                        model.Add(Me.CriaModel(idr))
                    End While
                End Using

                Return model

                'captura SQL Exception
            Catch ex As Data.SqlClient.SqlException
                'relança como Exception - Alterar em caso de mais detalhes
                Throw New Exception(String.Format("Erro de Banco de Dados: Numero:{0} Mensagem:{1}", ex.Number, ex.Message), ex)
            End Try

            Return Nothing
        End Function


    ''Camada Entities
    Public Class InfInscritos

        Private _IdPessoaFisica As Integer
        Public Property IdPessoaFisica() As Integer
            Get
                Return _IdPessoaFisica
            End Get
            Set(ByVal value As Integer)
                _IdPessoaFisica = value
            End Set
        End Property

        Private _CPF As Integer
        Public Property CPF() As Integer
            Get
                Return _CPF
            End Get
            Set(ByVal value As Integer)
                _CPF = value
            End Set
        End Property

        Private _NomeEmpresa As String
        Public Property NomeEmpresa() As String
            Get
                Return _NomeEmpresa
            End Get
            Set(ByVal value As String)
                _NomeEmpresa = value
            End Set
        End Property

        Private _NomePessoa As String
        Public Property NomePessoa() As String
            Get
                Return _NomePessoa
            End Get
            Set(ByVal value As String)
                _NomePessoa = value
            End Set
        End Property

        Private _Emaill As String
        Public Property Emaill() As String
            Get
                Return _Emaill
            End Get
            Set(ByVal value As String)
                _Emaill = value
            End Set
        End Property

    End Class

    Desde já agradeço a atenção.


    Rodrigo Nikitin Marcondes

    quinta-feira, 20 de setembro de 2012 19:04