我在使用自动映射器扩展“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)'
您的异常是在自动映射器中未正确映射
而是这个:
CreateMap<product, productDto>();
尝试此操作以正确映射工作:
CreateMap<Product, ProductDTO>().ForMember(dest => dest.ComplexObjects , opt => opt.MapFrom(src => src.Files.Select(i => new ComplexObject(i))));
如有不清楚的地方请致电