none
Stored Procedure e Hierarquia de Entidades RRS feed

  • Pergunta

  • Pessoal,

    Estou utilizando o Entity Framework e gostaria de recuperar as entidades através de uma Stored Procedure.
    Nos exemplos que achei, as SPs retornam entidades sem relacionamentos, o que não me ajudou muito.

    Tenho o seguinte cenário:
    3 Entidades:
    Equipamento
    Contrato
    Cliente
    Equipamento está vinculado ao Contrato que está vinvulado ao Cliente. Ou seja, de Equipamento para Contrato existe um Navigation e de Contrato para Cliente existe um Navigation.

    Quero executar uma SP que retorne os Equipamentos, mas com o Contrato e este com o Cliente.

    O comando que executo na SP é o seguinte:
    SELECT CD_Equipamento AS Codigo, E.CD_Numero_Parte AS NumeroParte, DS_Numero_Serie AS NumeroSerie, 
    DS_Numero_SAP AS NumeroSAP, CD_Contrato_Atual AS ContratoAtual, 
    CD_Local_Atual AS LocalAtual, CD_Tipo_Produto AS TipoProduto,
    DS_Status AS Status, DS_Condicao AS Condicao, CD_Sistema_Original AS SistemaOriginal, 
    CD_Sistema_Utilizado AS SistemaUtilizado FROM TB_Equipamento E 
    INNER JOIN TB_Contrato CO ON E.CD_Contrato_Atual = CO.CD_Contrato
    INNER JOIN TB_Cliente CLI ON CO.CD_Cliente = CLI.CD_Cliente


    Mapeei a SPs para um FunctionImport no EDMX

    Para chamar a procedure, executo o seguinte código:
            query = From equip In context.ListarEquipamentos(Nothing, Nothing, Nothing, Nothing) _
                       Where equip.ContratoAtual.Codigo = codigoContrato _
                        Order By equip.Parte.Numero, equip.NumeroSerie _
                        Select equip.Codigo, NumeroParte = equip.Parte.Numero, equip.NumeroSerie, equip.Parte.Descricao, equip.Status, equip.Condicao

    Quando chega no loop para iterar na variavel query (For Each equip In query) dá NullReferenceException.
    O debug para na linha 
    Where equip.ContratoAtual.Codigo = codigoContrato
    Olhei o conteudo de equip e ContratoAtual está vazio, quando na verdade deveria conter um Contrato. Mas meu problema esta aí, pois não sei como criar o Contrato para atribuir ao equipamento. 

    Alguém pode me dar uma luz?

    Muito obrigado!

    Paolo Ramos
    quarta-feira, 18 de março de 2009 17:49

Todas as Respostas