Foros del Web » Programación para mayores de 30 ;) » .NET »

Entity Framework no me genera la sentencia SQL que quiero

Estas en el tema de Entity Framework no me genera la sentencia SQL que quiero en el foro de .NET en Foros del Web. Tengo 4 entidades Profesores, Recursos, Materias y Asignaciones La consulta que intento hacer debe recuperar todas las Asignaciones junto con sus Recursos y Materias para ...
  #1 (permalink)  
Antiguo 23/11/2016, 10:41
MaxPayne00
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Entity Framework no me genera la sentencia SQL que quiero

Tengo 4 entidades Profesores, Recursos, Materias y Asignaciones



La consulta que intento hacer debe recuperar todas las Asignaciones junto con sus Recursos y Materias para un Profesor dado.

Código C#:
Ver original
  1. var asignacionesPaginadas = await db.Asignaciones.AsNoTracking()
  2. .Where(a => a.Profesores.ProfesorId=profesorId)
  3. .Include(a => a.Materia)
  4. .Include(a => a.Recurso)
  5. .OrderBy(a => a.FechaHoraReserva)
  6. .Skip(_paginado.CantidadPorPagina * _paginado.PaginaActual)
  7. .Take(_paginado.CantidadPorPagina)
  8. .ToListAsync();

Y genera la siguiente sentencia SQL:

Código SQL:
Ver original
  1. SELECT
  2.     [Project1].[AsignacionId] AS [AsignacionId],
  3.     [Project1].[FechaHoraReserva] AS [FechaHoraReserva],
  4.     [Project1].[MateriaId] AS [MateriaId],
  5.     [Project1].[Nombre] AS [Nombre],
  6.     [Project1].[Carrera] AS [Carrera],
  7.     [Project1].[RecursoId] AS [RecursoId],
  8.     [Project1].[Descripcion] AS [Descripcion]
  9.     FROM ( SELECT
  10.         [Extent1].[AsignacionId] AS [AsignacionId],
  11.         [Extent1].[FechaHoraReserva] AS [FechaHoraReserva],
  12.         [Extent2].[MateriaId] AS [MateriaId],
  13.         [Extent2].[Nombre] AS [Nombre],
  14.         [Extent2].[Carrera] AS [Carrera],
  15.         [Extent3].[RecursoId] AS [RecursoId],
  16.         [Extent3].[Descripcion] AS [Descripcion]
  17.         FROM   [dbo].[Asignaciones] AS [Extent1]
  18.         INNER JOIN [dbo].[Materias] AS [Extent2] ON [Extent1].[Materia_MateriaId] = [Extent2].[MateriaId]
  19.         INNER JOIN [dbo].[Recursos] AS [Extent3] ON [Extent1].[Recurso_RecursoId] = [Extent3].[RecursoId]
  20.         WHERE [Extent1].[Profesor_ProfesorId] = @p__linq__0
  21.     )  AS [Project1]
  22.     ORDER BY [Project1].[FechaHoraReserva] ASC
  23.     OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY

Yo quiero que genere la siguiente sentencia SQL:

Código SQL:
Ver original
  1. SELECT
  2.     [Extent1].[AsignacionId] AS [AsignacionId],
  3.     [Extent1].[FechaHoraReserva] AS [FechaHoraReserva],
  4.     [Extent2].[MateriaId] AS [MateriaId],
  5.     [Extent2].[Nombre] AS [Nombre],
  6.     [Extent2].[Carrera] AS [Carrera],
  7.     [Extent3].[RecursoId] AS [RecursoId],
  8.     [Extent3].[Descripcion] AS [Descripcion]
  9.     FROM   [dbo].[Asignaciones] AS [Extent1]
  10.     INNER JOIN [dbo].[Materias] AS [Extent2] ON [Extent1].[Materia_MateriaId] = [Extent2].[MateriaId]
  11.     INNER JOIN [dbo].[Recursos] AS [Extent3] ON [Extent1].[Recurso_RecursoId] = [Extent3].[RecursoId]
  12.     WHERE [Extent1].[Profesor_ProfesorId] = @p__linq__0
  13.     ORDER BY [Extent1].[FechaHoraReserva] ASC
  14.     OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY

Estoy trabajando con la versión 6 de Entity Framework junto con SQL Server localdb 13.0.2151
  #2 (permalink)  
Antiguo 23/11/2016, 13:16
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 11 meses
Puntos: 606
Respuesta: Entity Framework no me genera la sentencia SQL que quiero

Estas usando Entity precisamente para abstraerte del código SQL. Si quieres ejecutar una consulta en concreto entonces no uses Linq+EF, usa ADO.NET y lanza ese código.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 23/11/2016, 17:20
MaxPayne00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Entity Framework no me genera la sentencia SQL que quiero

Cita:
Iniciado por Malenko Ver Mensaje
Estas usando Entity precisamente para abstraerte del código SQL. Si quieres ejecutar una consulta en concreto entonces no uses Linq+EF, usa ADO.NET y lanza ese código.
Yo quiero saber si usando Entity Framework puede generar esa sentencia SQL. La idea es usar LinQ y nada de SQL porque el RDBMS cambiará a PostgreSql (actualmente es Sql Server). Igual en el foro de MSDN me sugirieron lo que me decís.

Saludos.
  #4 (permalink)  
Antiguo 23/11/2016, 18:15
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 11 meses
Puntos: 606
Respuesta: Entity Framework no me genera la sentencia SQL que quiero

Creo que deberías leerte para que sirve Entity Framework y porque se utiliza porque me da la sensación (al igual que a quien te contestó en el foro de MSDN) que no lo tienes nada claro.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 24/11/2016, 06:48
MaxPayne00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Entity Framework no me genera la sentencia SQL que quiero

Entonces el nombre del tema esta mal. ¿Por qué Linq To Entities no me genera la sentencia SQL que quiero?
  #6 (permalink)  
Antiguo 24/11/2016, 08:55
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 11 meses
Puntos: 606
Respuesta: Entity Framework no me genera la sentencia SQL que quiero

Cita:
Iniciado por MaxPayne00 Ver Mensaje
Entonces el nombre del tema esta mal. ¿Por qué Linq To Entities no me genera la sentencia SQL que quiero?
Creo que también tendrías que repasar la finalidad de Linq To Entities.
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: entity, framework, ordenamiento, paginado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.