2

I have entities:

[Table("Representatives")]
public class Representative
{
    [Column("RepID"), Key]
    public int Id { get; set; }
    [Column("MemID")]
    public int MemberId { get; set; }
    public virtual Member Member { get; set; }
}

[Table("Members")]
public class Member
{
    [Column("MemID"), Key]
    public int Id { get; set; }

    [ForeignKey("MemberId")]
    public virtual ICollection<Representative> Representatives { get; set; }
}

where Representatives relate to Member as many to one. I want to retrieve some representatives with their parent members and project it all to some view model. I've configured automapper like this:

    Mapper.CreateMap<Representative, RepresentativeViewModel>()
          .ForMember(m => m.RepId, a => a.MapFrom(x => x.Id))
          .ForMember(m => m.MemberModel, a => a.MapFrom(x => x.Member));

    Mapper.CreateMap<Member, MemberViewModel>()
          .ForMember(m => m.MemId, a => a.MapFrom(x => x.Id))
          .ForMember(m => m.OrganizationName, a => a.MapFrom(x => x.Name));

If I run this code:

var prj = ctx.Representatives.Where(r => r.Id == 1).Project().To<RepresentativeViewModel>();

then I get expression tree that contains func invocation (debugged):

...
.Lambda #Lambda2<System.Func`2[ConsoleApplication1.Representative,ConsoleApplication1.RepresentativeViewModel]>(ConsoleApplication1.Representative $var1)
{
    .New ConsoleApplication1.RepresentativeViewModel(){
        Name = $var1.Name,
        RepId = $var1.Id,
        MemberModel = .Invoke (.Lambda #Lambda3<System.Func`2[ConsoleApplication1.Member,ConsoleApplication1.MemberViewModel]>)($var1.Member)
    }
}
.Lambda #Lambda3<System.Func`2[ConsoleApplication1.Member,ConsoleApplication1.MemberViewModel]>(ConsoleApplication1.Member $var2)
{
    .New ConsoleApplication1.MemberViewModel(){
        MemId = $var2.Id,
        OrganizationName = $var2.Name
    }
}
...

so for some reason builder invokes Func instead of calling Expression. Do you have ideas why it's so? How can I make my mapper build correct expression and SQL query?

halfer
  • 19,824
  • 17
  • 99
  • 186
LINQ2Vodka
  • 2,996
  • 2
  • 27
  • 47

0 Answers0