自动映射器无法翻译列表<string>列表<complexObject>

问题描述 投票:0回答:1

我在使用自动映射器扩展“ProjectToList”加载产品时遇到问题 创建查询并自动从列表< string >转换为列表< complexObject > 但是出现cann't translate linq to sql的问题。

在 DotNet Core 中

class Product { 
    public string ProductName { get; set; } 
    public List<string> files { gets; set; }
}

数据库上下文配置

builder.Entity<Product>(e =>
{
    e.Property(a => a.Files)
     .HasConversion(v => string.Join(',', v), v => v.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList());
}

复杂对象

class complexObject {
    public complexObject(string id) {
       this.Id = Guid.Parse(id);
    }
    public Guid Id { get;set; }
}

这部分的AutoMapper配置

 CreateMap<string, complexObject>().ConvertUsing(a => new FileDto(a));

 CreateMap<product, productDto>()

产品

...
public List<complexObject> files  {get; set;}

但我总是面临这个问题

无法翻译 LINQ 表达式 'dtoString => new complexObject(dtoString)'

c# asp.net-core entity-framework-core automapper
1个回答
0
投票

您的异常是在自动映射器中未正确映射

而是这个:

CreateMap<product, productDto>();

尝试此操作以正确映射工作:

CreateMap<Product, ProductDTO>().ForMember(dest => dest.ComplexObjects , opt => opt.MapFrom(src => src.Files.Select(i => new ComplexObject(i))));

如有不清楚的地方请致电

© www.soinside.com 2019 - 2024. All rights reserved.