El error solo me ocurre cuando hago consultas asíncronas de SQL ya sea Procedimientos almacenados o codigo SQL como “Select * FROM…” utilizando el patron repositorio sobre un Dbset. cuando son consultas asincronas de tipo Linq funciona correctamente.
Estoy migrando una aplicacion .Net core 2.1 a una version de .Net 8 y tengo unas consultas a la base de datos desde Sp’s de la siguiente manera
public async Task<StateCodeEntitie> GetStateISOByIdAsync(string stateName, int countryId)
{
var sqlQuery = $"EXEC dbo.USPS_GetStateCode '{stateName}', {countryId}";
var data =await Repository<StateCodeEntitie>().FromQueryAsync(sqlQuery).ConfigureAwait();
return data.FirstOrDefault();
}
anteriormente funcionaba sin ningun problema. Ahora con la actualización de .Net me arroja el error mencionado.
lo raro es que si intento hacer la misma consulta, pero de forma síncrona si me funciona y si me arroja datos:
public async Task<StateCodeEntitie> GetStateISOByIdAsync(string stateName, int countryId)
{
var sqlQuery = $"EXEC dbo.USPS_GetStateCode '{stateName}', {countryId}";
var data = repository.FromSql(sqlQuery);
return data.FirstOrDefault();
}
aunque estando dentro de un método asíncrono esto no me es muy funcional.
Entonces opte por convertir este mismo método es una Task de forma manual y también funciona.
var data = await Task.FromResult(repository.FromSql(sql).ConfigureAwait();
si alguien me puede ayudar con el problema del por qué el metodo original “FromQueryAsync” de EF no me funciona ahora que hice la actualización. tal vez me haga falta una librería o que este deprecada para .net 8.
cabe mencioanr que mi modelo solo contiene un dato y esta de esta forma:
[Keyless]
public class StateCodeEntitie
{
public string StateCode { get; set; }
}
gracias
Javier Cruz Islas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.