Sim, concerteza ....
Aqui vou dar um exemplo de StoredProcedure e o código referente para adicionar em um DbContext (ENTITY)...

Esse seria as tabelas da Stored Procedure logo abaixo que irá buscar pelo PessoaId alguns dados
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE sp_ListPessoasComTelefones
@PessoaId int
AS
BEGIN
SET NOCOUNT ON;
BEGIN
SELECT Pessoa.PessoaId,
Pessoa.Nome,
Telefone.TelefoneId,
Telefone.Ddd,
Telefone.Numero
FROM Pessoa LEFT JOIN
Telefone ON Pessoa.PessoaId = Telefone.PessoaId
WHERE Pessoa.PessoaId = @PessoaId
ORDER BY Pessoa.Nome, Pessoa.PessoaId
END
END
GO
Essa SP trará os telefones pelo Código da Pessoa (PessoaId)

Entity 6
using System;
namespace ConsoleAppEntitySProcedure.Model
{
public partial class ContextoSP: System.Data.Entity.DbContext
{
public ContextoSP()
:base("Data Source=.\\sqlexpress;Initial Catalog=cbo;Persist Security Info=True;User ID=sa;Password=senha")
{
}
public virtual System.Data.Entity.Infrastructure.DbRawSqlQuery<PessoasComTelefones> SP_PessoasComTelefones(int PessoaId)
{
System.Data.SqlClient.SqlParameter paramPessoaId = new System.Data.SqlClient.SqlParameter("@PessoaId", PessoaId);
return this.Database.SqlQuery<PessoasComTelefones>("EXEC sp_ListPessoasComTelefones @PessoaId", paramPessoaId);
}
}
public partial class PessoasComTelefones
{
public int PessoaId { get; set; }
public String Nome { get; set; }
public int TelefoneId { get; set; }
public string Ddd { get; set; }
public string Numero { get; set; }
}
}
Perceba que @PessoaId que está contido na SP deve também aparecer na hora da criação desse método se não pode ocasionar o erro ... !!!
Exemplo de utilização
using (ContextoSP sp = new ContextoSP())
{
IList<PessoasComTelefones> Lista = sp.SP_PessoasComTelefones(3).ToList();
}
Dica: crie um Contexto Separado só para Stored Procedure, a organização do seu projeto melhora em muito com essa dica !!!
Fulvio Cezar Canducci Dias

