Principales respuestas
Entity Framework Core

Pregunta
-
Hola
Trabajo con EF Core 3.1
Deseo replicar un método que esta hecho en EF6 pasarlo a EFCore 3.1
EF6
using (var context = new BusinessContext()) { DbQuery<T> query = context.Set<T>(); includelist.ForEach(x => query = query.Include(x)); return query.FirstOrDefault(predicate); }
EFCore 3.1
using (var context = new CatalogoInquilinoContext()) { DbSet<T> query = context.Set<T>(); includelist.ForEach(x => query = (DbSet<T>)query.Include(x)); return await query.FirstOrDefaultAsync(predicate); }
DbSet es lo que me recomendo el intelicence pero a la hora de ejecutar el método me da un error de que no esta bien castiado.
Saludos!
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú- Editado Pedro Ávila lunes, 29 de junio de 2020 16:06
Respuestas
-
Respondiendo a tu pregunta me salia este error:
System.InvalidCastException: Unable to cast object of type 'Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[TecSoftware.EntidadesDominio.BaseDato]' to type 'Microsoft.EntityFrameworkCore.DbSet`1[TecSoftware.EntidadesDominio.BaseDato]'. at TecSoftware.Infrastructure.BaseRepository`1.<>c__DisplayClass5_0.<Single>b__0(String x) in C:\D\TecSoftwareMultitenant\TecSoftwareMultitenant\TecSoftware.Infrastructure\Repositories\BaseRepository.cs:line 96 at System.Collections.Generic.List`1.ForEach(Action`1 action)
Ese error salía justo en la línea donde esta el ForEach
Lo solucione de la siguiente manera
using (var context = new CatalogoInquilinoContext()) { IQueryable<T> query = context.Set<T>(); includelist.ForEach(x => query = query.Include(x)); return await query.FirstOrDefaultAsync(predicate); }
Patrón de repositorio con Entity Framework Core
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú- Editado Pedro Ávila lunes, 29 de junio de 2020 17:16
- Propuesto como respuesta Andres Aguilar MModerator lunes, 29 de junio de 2020 19:12
- Marcado como respuesta Andres Aguilar MModerator lunes, 29 de junio de 2020 19:13
Todas las respuestas
-
hola
>>pero a la hora de ejecutar el método me da un error de que no esta bien castiado.
Cual es el mensaje exactamente que puedes leer?
que pasa si lo dejas igual a como lo tenias en EF6? no veo porque necesitas aplicar ningun caste en el ForEach
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Respondiendo a tu pregunta me salia este error:
System.InvalidCastException: Unable to cast object of type 'Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[TecSoftware.EntidadesDominio.BaseDato]' to type 'Microsoft.EntityFrameworkCore.DbSet`1[TecSoftware.EntidadesDominio.BaseDato]'. at TecSoftware.Infrastructure.BaseRepository`1.<>c__DisplayClass5_0.<Single>b__0(String x) in C:\D\TecSoftwareMultitenant\TecSoftwareMultitenant\TecSoftware.Infrastructure\Repositories\BaseRepository.cs:line 96 at System.Collections.Generic.List`1.ForEach(Action`1 action)
Ese error salía justo en la línea donde esta el ForEach
Lo solucione de la siguiente manera
using (var context = new CatalogoInquilinoContext()) { IQueryable<T> query = context.Set<T>(); includelist.ForEach(x => query = query.Include(x)); return await query.FirstOrDefaultAsync(predicate); }
Patrón de repositorio con Entity Framework Core
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú- Editado Pedro Ávila lunes, 29 de junio de 2020 17:16
- Propuesto como respuesta Andres Aguilar MModerator lunes, 29 de junio de 2020 19:12
- Marcado como respuesta Andres Aguilar MModerator lunes, 29 de junio de 2020 19:13
-
Hola Pedro Ávila,
Gracias por confirmar que se ha encontrado una solución a la consulta realizada. Debido a ello, este hilo será cerrado.
Si es necesario, por favor abra un nuevo hilo.
Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte.
Gracias por usar los foros de MSDN.
Andres Aguilar
____________________________
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
-
entiendo que EF Core depreco el uso de DbQuery, por eso si lo usabas
var query = context.Set<T>();
deberia funcionar directo
aunque bueno quizas necesite indicar
explicitamente ya que tiene varias implementaciones posibles
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP lunes, 29 de junio de 2020 20:03