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。它不能那样做。
第一个有效,因为它是一个简单的字符串连接,更容易翻译。
我今天遇到了 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。它不能那样做。
第一个有效,因为它是一个简单的字符串连接,更容易翻译。