Inquiridor
Stored Procedure e Hierarquia de Entidades

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:EquipamentoContratoClienteEquipamento 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 EINNER JOIN TB_Contrato CO ON E.CD_Contrato_Atual = CO.CD_ContratoINNER JOIN TB_Cliente CLI ON CO.CD_Cliente = CLI.CD_ClienteMapeei a SPs para um FunctionImport no EDMXPara 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.CondicaoQuando chega no loop para iterar na variavel query (For Each equip In query) dá NullReferenceException.O debug para na linhaWhere equip.ContratoAtual.Codigo = codigoContratoOlhei 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
Todas as Respostas
-
Acho que podem lhe ajudar em algo, seguem os link:
Using Stored Procedures for Change Processing in the ADO.NET Entity Framework
http://blogs.msdn.com/adonet/archive/2007/03/08/using-stored-procedures-for-change-processing-in-the-ado-net-entity-framework.aspx
Slide Decks and Demos from my ADO.Net Entity Framework Talk
http://blogs.microsoft.co.il/blogs/bursteg/archive/2006/10/23/Slide-Decks-and-Demos-ADO.Net-Entity-Framework.aspx
Abraços,
Magno Machado Borba |- Se o post foi util ou resposta nao esqueca de marcar. -
Olá Paolo,
Mais algumas referências sobre este tópico:
Entity Framework Modeling: Select Stored Procedures
http://blogs.msdn.com/bags/archive/2009/03/13/entity-framework-modeling-select-stored-procedures.aspx
Stored Procedure Support (Entity Framework)
http://msdn.microsoft.com/en-us/library/bb399203.aspx
How to: Define a Model with a Stored Procedure (Entity Framework)
http://msdn.microsoft.com/en-us/library/bb896279.aspx
How to: Execute a Query Using a Stored Procedure (Entity Framework)
http://msdn.microsoft.com/en-us/library/bb896334.aspx
Entity Framework Problems: Mapping stored procedures to non-insert,update,delete
http://forums.asp.net/t/1363046.aspx
Implement SELECT Stored Procedures that return miscellaneous data in CTP2 of EF Designer
http://www.thedatafarm.com/blog/2007/12/19/ImplementSELECTStoredProceduresThatReturnMiscellaneousDataInCTP2OfEFDesigner.aspx
ADO .NET Entity Framework - Usando LINQ to Entities
http://www.macoratti.net/08/10/adn_lnqe.htm
ADO.NET Entity Framework Tutorial and Basics
ADO.NET Entity Framework Tutorial with LINQ to Entities, method expressions, and stored procedures
http://www.codeguru.com/csharp/csharp/cs_linq/article.php/c15489/
The Case for Stored Procedures
http://www.codeguru.com/csharp/csharp/cs_linq/print.php/c15489__4/
Using Stored Procedures with the ADO.NET Entity Framework
http://www.codeguru.com/csharp/csharp/cs_linq/print.php/c15489__5/
Mapping INSERT, UPDATE, and DELETE to Stored Procedures
http://www.codeguru.com/csharp/csharp/cs_linq/print.php/c15489__6/
More Information about the Entity Framework
http://www.codeguru.com/csharp/csharp/cs_linq/print.php/c15489__7/
Abraços, bons estudos e desenvolvimento.
Magno Machado Borba |- Se o post foi util ou resposta nao esqueca de marcar.