none
Procedure em LINQ to sql RRS feed

  • Pergunta

  • olá pessoal!

    tenho procedures que preciso utilizar com o LINQ TO ENTITIES

    é possivel?

     

    pelo q li não... mas deve haver uma alternativa.

    aguardo sua resposta, valeu!

    quarta-feira, 15 de dezembro de 2010 10:33

Respostas

  • Sim, é possivel.

     a questão é que ao você importar um banco de dados para o seu EDMX, as procedures não irão aparecer como as entidades. Para isto, lá no editor do seu EDMX, na aba MODEL BROWSER na parte referente ao seu banco de dados deverá ter uma pasta chamada Stored Procedures, lá dentro você irá encontrar as SP importadas. Clique com o botão direito sobre ela e clique em ADD FUNCTION IMPORT.

    defina o nome ao qual você quer chamar a SP, o tipo de retorno(SE TIVER) e mapeia as colunas de retorno, caso seja um retorno de + de uma tabela, você pode criar um novo tipo para ele. aperte o OK, veja abaixo dois exemplos de chamadas para duas procedures:

     

    /*EXEMPLOS*/
    
    
    
    
    create
     proc
     retornaNomes @nome nvarchar
    (100)
    as
    
    select
     * from 
     person p inner
     join
     person_contact p1 on
     p.id = p1.id
    where
     p.Nome like
     @nome+'%'
    
    
    ---------------------------------------------
    
    
    create 
    proc
     soma 
    @v1 int
    ,
    @v2 int
    ,
    @Resultado int OUTPUT as set @Resultado = @v1+@v2 return @resultado

     

    no código C#, após a realizaçãodo da importação que eu citei fica assim:

     

    ExampleContainer db = new
     ExampleContainer();
      /*CALC*/
    
    
    System.Data.Objects.ObjectParameter resultado = new
     System.Data.Objects.ObjectParameter("Resultado"
    ,0);
    db.soma(1, 2, resultado);
      
      /*RETORNANOMES*/
    
    List<Person> lstPerson = db.retornaNomes("olavo"
    ).ToList();
    

     


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    quarta-feira, 15 de dezembro de 2010 16:09
    Moderador

Todas as Respostas

  •  No Linq to SQL eu sei que é só arrastar as procedures para a área de funções do lado direito do modelo do banco. Isso no MOdel ... Se não me engano no Entities vc tem que retornar um tipo definido.
    quarta-feira, 15 de dezembro de 2010 12:59
  • Sim, é possivel.

     a questão é que ao você importar um banco de dados para o seu EDMX, as procedures não irão aparecer como as entidades. Para isto, lá no editor do seu EDMX, na aba MODEL BROWSER na parte referente ao seu banco de dados deverá ter uma pasta chamada Stored Procedures, lá dentro você irá encontrar as SP importadas. Clique com o botão direito sobre ela e clique em ADD FUNCTION IMPORT.

    defina o nome ao qual você quer chamar a SP, o tipo de retorno(SE TIVER) e mapeia as colunas de retorno, caso seja um retorno de + de uma tabela, você pode criar um novo tipo para ele. aperte o OK, veja abaixo dois exemplos de chamadas para duas procedures:

     

    /*EXEMPLOS*/
    
    
    
    
    create
     proc
     retornaNomes @nome nvarchar
    (100)
    as
    
    select
     * from 
     person p inner
     join
     person_contact p1 on
     p.id = p1.id
    where
     p.Nome like
     @nome+'%'
    
    
    ---------------------------------------------
    
    
    create 
    proc
     soma 
    @v1 int
    ,
    @v2 int
    ,
    @Resultado int OUTPUT as set @Resultado = @v1+@v2 return @resultado

     

    no código C#, após a realizaçãodo da importação que eu citei fica assim:

     

    ExampleContainer db = new
     ExampleContainer();
      /*CALC*/
    
    
    System.Data.Objects.ObjectParameter resultado = new
     System.Data.Objects.ObjectParameter("Resultado"
    ,0);
    db.soma(1, 2, resultado);
      
      /*RETORNANOMES*/
    
    List<Person> lstPerson = db.retornaNomes("olavo"
    ).ToList();
    

     


    Olavo Oliveira Neto
    Se for útil marque como resposta e faça um Developer feliz :)
    quarta-feira, 15 de dezembro de 2010 16:09
    Moderador