Automapper - 无法识别 string.format 方法

Automapper - does not recognize string.format method

我今天遇到了 AutoMapper 库的奇怪行为。为什么 string.Format 在第二种情况下不起作用?你能给我解释一下为什么第一个案例有效而第二个案例抛出异常吗?


映射配置:(有效)

config.CreateMap<Person, PersonView>().
    ForMember(dest => dest.FullName, opt => opt.
       MapFrom(src => src.Data.Code + " - " + src.Number));

映射配置:(不工作)

config.CreateMap<Person, PersonView>().
    ForMember(dest => dest.FullName, opt => opt.
        MapFrom(src => string.Format("{0} - {1}", src.Data.Code, src.Number)));

投影:

using (var ctx = new MyDbContext())
{
    return ctx.Persons.Include(i => i.Data).Project().To<PersonView>().ToList();
}

异常:

这与 AutoMapper 没有任何关系。

您实际上是在要求 Entity Framework 将调用方法的表达式(在本例中为 string.Format)转换为 SQL。它不能那样做。

第一个有效,因为它是一个简单的字符串连接,更容易翻译。