Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AutoMapper未映射IEnumerable问题_C#_Automapper - Fatal编程技术网

C# AutoMapper未映射IEnumerable问题

C# AutoMapper未映射IEnumerable问题,c#,automapper,C#,Automapper,我正在尝试使用Automapper将一个枚举映射到另一个枚举,但不断出现以下控制台错误: Error CS0266 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Flg.Producer.Snowflake.V2.Proxies.Snowflake.Book>' to 'System.Threading.Tasks.Task<System.Collections.Generic

我正在尝试使用Automapper将一个枚举映射到另一个枚举,但不断出现以下控制台错误:

Error   CS0266  Cannot implicitly convert type
'System.Collections.Generic.IEnumerable<Flg.Producer.Snowflake.V2.Proxies.Snowflake.Book>'
to
'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<Flg.Producer.Snowflake.V2.Proxies.Snowflake.Book>>'
错误CS0266无法隐式转换类型
'System.Collections.Generic.IEnumerable'
到
'System.Threading.Tasks.Task'
代码块:

public Task<IEnumerable<Book>> GetAllBooks()
{
    Task<IEnumerable<BookResult>> result;
            
    using (IDbConnection snowflakeDbConnection = _dbConnection)
    {
        result = snowflakeDbConnection.QueryAsync<BookResult>(string.Format(SelectBooks));    
    }
    var books = mapper.Map<IEnumerable<Book>>(result);

    return books;
}

public class Book: IRequest
{
    public string Id { get; set; }
    public string Name { get; set; }
}
public class BookResult : IRequest
{
    public string Id { get; set; }
    public string Name { get; set; }
}

public class AutoMapperProfile : Profile
{
    public AutoMapperProfile()
    {
        CreateMap<IEnumerable<SnowflakeDb.BookResult>, IEnumerable<Book>>();
    }
}
公共任务GetAllBooks() { 任务结果; 正在使用(IDbConnection雪花数据库连接=_数据库连接) { 结果=snowflakeDbConnection.QueryAsync(string.Format(SelectBooks)); } var books=mapper.Map(结果); 还书; } 公共类书:IRequest { 公共字符串Id{get;set;} 公共字符串名称{get;set;} } 公共类图书结果:IRequest { 公共字符串Id{get;set;} 公共字符串名称{get;set;} } 公共类自动映射配置文件:配置文件 { 公共自动映射配置文件() { CreateMap(); } }
任何帮助或正确的指导都将受到感谢。谢谢。

这不是自动映射问题,因为从
IEnumerable
任务
不匹配

请更改以下代码块:

public async Task<IEnumerable<Book>> GetAllBooks()
    {
       Task<IEnumerable<BookResult>> result;
            
       using (IDbConnection snowflakeDbConnection = _dbConnection)
       {
          result = await snowflakeDbConnection.QueryAsync<BookResult>(string.Format(SelectBooks));    
       }
       var books = mapper.Map<IEnumerable<Book>>(result.ToList());

       return books;
    }

你不是在等你整洁的QueryAsync

等待查询同步的那一行,然后确保您的映射是好的,并且在启动DI容器中。 添加services.AddAutomapper(AppDomain.CurrentDomain.GetAssemblys())

此外,配置文件构造函数中的CreateMap方法不需要IEnumerable,请更改为此=>

CreateMap(); 相应地替换MappFromEntity和MappToEntity


您会没事的。

请阅读错误消息。
public class AutoMapperProfile : Profile
    {
        public AutoMapperProfile()
        {
            CreateMap<SnowflakeDb.BookResult, Book>();
        }
    }