//配置 CreateMap<Test, TestDto>()
.ForMember(s => s.Content, opt => opt.MapFrom(t => t.Content.Replace("豆腐干", "")));
var dto= await _DbContext.Tests .ProjectTo<TestDto>() .AsNoTracking() .ToListAsync();
//解释成sql语句
SELECT `Tests`.`Id`, REPLACE(`Tests`.`Content`, '豆腐干', '') AS `Content` FROM `Tests` AS `dtoTest`
用ProjectTo的话会导致这个映射逻辑在数据中进行REPLACE(`Tests`.`Content`, '豆腐干', '')
不用ProjectTo的话,拿到Entity之后再Map虽然可以,但不是我想要的。
该怎么配置映射关系,才能让Replace的过程在查出数据之后再到内存中进行?
那就在实体或DTO的属性中进行Replace
似乎只能是这样,或者查出所有字段再映射。
这样也挺好,放到业务层去处理,这个映射逻辑本来就属于业务逻辑
DbContext.Tests
.AsNoTracking()
.ToListAsync()
.ProjectTo<TestDto>();
不是这样玩的
@找不到一个满意的昵称: 那你就不要用projectto 了,总之先拿到 list ,然后用相关的api就可以 了。