首页 新闻 会员 周边

AutoMapper ProjectTo

0
悬赏园豆:10 [已解决问题] 解决于 2018-11-25 19:17
//配置
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的过程在查出数据之后再到内存中进行?

找不到一个满意的昵称的主页 找不到一个满意的昵称 | 菜鸟二级 | 园豆:243
提问于:2018-11-25 17:09
< >
分享
最佳答案
0

那就在实体或DTO的属性中进行Replace

收获园豆:10
dudu | 高人七级 |园豆:30943 | 2018-11-25 18:13

似乎只能是这样,或者查出所有字段再映射。

这样也挺好,放到业务层去处理,这个映射逻辑本来就属于业务逻辑

找不到一个满意的昵称 | 园豆:243 (菜鸟二级) | 2018-11-25 19:17
其他回答(1)
0

DbContext.Tests
.AsNoTracking()
.ToListAsync()
.ProjectTo<TestDto>();

放逐人 | 园豆:694 (小虾三级) | 2018-11-25 18:29

不是这样玩的

@找不到一个满意的昵称: 那你就不要用projectto 了,总之先拿到 list ,然后用相关的api就可以 了。

支持(0) 反对(0) 放逐人 | 园豆:694 (小虾三级) | 2018-11-25 18:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册