Stored Procedures en el Entity Framework

Desde el Entity Framework podemos manjear Procedimiento almacenados. El Entity Framework tiene la capacidad de compilar automáticamente comandos nativos para la base de datos en función de sus consultas de LINQ-to-Entities o Entity SQL, así como construir los comandos para insertar, actualizar y eliminar datos. Es posible que desee anular estos pasos y usar sus propios procedimientos almacenados predefinidos. Puede usar procedimientos almacenados para obtener los datos o para agregar / actualizar / eliminar los registros de una o varias tablas de la base de datos. EF API crea una función en lugar de una entidad en EDM para cada procedimiento almacenado y función definida por el usuario (UDF) en la base de datos de destino. Usemos el procedimiento almacenado para recuperar los datos de la base de datos. Primero, cree los siguientes procedimientos almacenados GetCoursesByStudentId en su base de datos SQL Server. Este procedimiento devuelve todos los cursos asignados a un estudiante en particular. CREATE PROCEDURE [dbo].[GetCoursesByStudentId] -- Add the parameters for the stored procedure here @StudentId int = null AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here select c.courseid, c.coursename,c.Location, c.TeacherId from student s left outer join studentcourse sc on sc.studentid = s.studentid left outer join course c on c.courseid = sc.courseid where s.studentid = @StudentId END Desde el Modelo de datos de entidad haciendo clic derecho en el proyecto en el explorador de soluciones en Visual Studio -> Agregar -> Nuevo elemento. Esto abrirá una ventana emergente Agregar nuevo elemento. En la ventana emergente, seleccione ADO.NET Entity Data Model y proporcione un nombre apropiado para EDM y haga clic en el botón Agregar. Esto abrirá el Asistente de Entity Data Model. Seleccione EF Designer de la base de datos y haga clic en el botón Siguiente, como se muestra a continuación. 

Luego, debe crear una conexión con su base de datos existente. Si esta es la primera vez que está creando un EDM para su base de datos, entonces necesita crear una nueva conexión haciendo clic en el botón Nueva conexión ... Aquí, ya tenemos una conexión, por lo tanto, seleccione la base de datos del menú desplegable y haga clic en el botón Siguiente.
En este paso, seleccione GetCoursesByStudentId en Procedimientos almacenados y funciones. Asegúrese de que esté seleccionada la casilla Importar procedimientos y funciones almacenados en el modelo de entidad y luego haga clic en Finalizar.
Verá el procedimiento GetCoursesByStudentId almacenado agregado en Procedimientos almacenados / Funciones e Importaciones de funciones que se muestran a continuación, con el nuevo tipo complejo GetCoursesByStudentId_Result en el Explorador de modelos. Cada vez que importa un procedimiento almacenado o UDF en un EDM, crea un nuevo tipo complejo con el nombre {sp name} _Result de forma predeterminada.
GetCoursesByStudentId devuelve los mismos campos definidos en la entidad del curso. Por lo tanto, no es necesario que agreguemos un nuevo tipo complejo para GetCoursesByStudentId. Puede cambiarlo haciendo clic derecho en GetCoursesByStudentId en Function Imports y seleccionando Editar. Esto abrirá la ventana emergente Editar Importación de Función como se muestra a continuación.
Para establecer la entidad del curso como tipo de resultado, seleccione Entidades y seleccione Curso en el menú desplegable en la ventana emergente y haga clic en Aceptar, como se muestra a continuación:
Esto agregará la función llamada GetCoursesByStudentId en la clase de contexto (derivado de DbContext) como se muestra a continuación:
Ahora puede usar GetCoursesByStudentId como una función y obtener los datos, como se muestra a continuación:

using (var context = new SchoolDBEntities())
{
    var courses = context.GetCoursesByStudentId(1);

    foreach (Course cs in courses)
        Console.WriteLine(cs.CourseName);
}

El ejemplo anterior ejecutará la siguiente declaración en la base de datos:

exec [dbo]. [GetCoursesByStudentId] @ StudentId = 1

Referencias 
http://www.entityframeworktutorial.net/EntityFramework4.3/raw-sql-query-in-entity-framework.aspx http://www.entityframeworktutorial.net/stored-procedure-in-entity-framework.aspx

Comentarios

Entradas más populares de este blog

ESCANEO DEL CODIGO PDF417 DEL DNI (Documento Nacional de Identidad digital)

¿Que tipos de Mensajes de HL7 hay?

¿Que es Razor?