es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

.NET 5.0 Asegúrese de que el tipo de retorno pueda ser mapeado por el proveedor actual.

Modelo:

public partial class FN_Result
{
    public string UserImage { get; set; }
    public string UserName { get; set; }
    public string Title { get; set; }
    public int messageId { get; set; }
    public int SenderId { get; set; }
    public int ReceiverId { get; set; }
    public string MessageText { get; set; }
    public bool MessageStatus { get; set; }
    public bool IsAdmin { get; set; }
    public bool IsClinician { get; set; }
    public string CreatedOn { get; set; }
    public int RowNum { get; set; }
}

Constructor y declaración de variables:

private readonly IDbConnection db;

public DbContext(DbContextOptions<DbContext> options, IConfiguration configuration)
            : base(options)
{
    this.Configuration = configuration;
    this.db = new SqlConnection(this.Configuration.GetConnectionString("PortalDb"));
}

Tenemos la siguiente DbFunction en un proyecto MVC .NET 5.0:

[DbFunction("namespace", "FN_Name")]
public async Task<IEnumerable<FN_Result>> FN_MethodName(int id)
{
   var parameters = new DynamicParameters();
   parameters.Add("@id", id);

   return await this.db.QueryAsync<FN_Result>("[namespace].[FN_Name](@id)", parameters, commandType: CommandType.Text);
}

IEnumerable es el tipo de retorno de db.QueryAsync&lt;FN_Result&gt;.

Sin embargo, arroja el siguiente mensaje de error: Message=La DbFunction ‘dbPortalContext.FN_Name([System.Int32, System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e])’ tiene un tipo de retorno no válido ‘Task<IEnumerable>’. Asegúrese de que el tipo de retorno pueda ser mapeado por el proveedor actual.

También hemos intentado convertirlo en una lista, sin éxito.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error indica que el tipo de retorno Task<><fn_result>> no puede ser mapeado por el proveedor actual.

    Para resolver este problema, es posible que necesite cambiar el tipo de retorno a algo que pueda ser mapeado por el proveedor actual. Una opción es convertir el resultado en una lista antes de devolverlo:

    [DbFunction("namespace", "FN_Name")]
    public async Task<><fn_result>> FN_MethodName(int id)
    {
       var parameters = new DynamicParameters();
       parameters.Add("@id", id);
    
       var result = await this.db.QueryAsync<fn_result>("[namespace].[FN_Name](@id)", parameters, commandType: CommandType.Text);
    
       return result.ToList();
    }
    

    Alternativamente, podría intentar utilizar un proveedor diferente que admita mapeo del tipo de retorno Task<><fn_result>>.

Comments are closed.