AutoMapper 3 を使用して、Integer プロパティを持つクラスを String プロパティを持つ別のクラスに投影しようとしています。
クエリが実行されると、次の例外が発生します。
System.NotSupportedException: LINQ to Entities はメソッド 'System.String ToString()' メソッドを認識せず、このメソッドはストア式に変換できません。
コードの関連部分は次のとおりです。
public partial class Lookup
{
public int LookupId { get; set; }
public int LookupTypeId { get; set; }
public string Value { get; set; }
public int SequencialOrder { get; set; }
public virtual LookupType LookupType { get; set; }
}
public class LookupProfile : Profile
{
protected override void Configure()
{
CreateMap<Lookup, SelectListItem>()
.ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.LookupId.ToString()))
.ForMember(dest => dest.Text, opt => opt.MapFrom(src => src.Value));
}
}
クエリは次のようになります。
Provinces = _db.Lookups.Project().To<SelectListItem>().ToList()
質問:
適切なマッピングを行い、Linq To Entities 内で引き続き動作するように LookupProfile を構成する方法はありますか? または、Linq to Entities でプロジェクションを機能させる別の方法はありますか?