Entity Framework: how to do correct “Include” on custom type

后端 未结 2 1366
春和景丽
春和景丽 2021-01-19 17:22

Suppose we have 2 types, mapped to a Database via EF 4.

Schedule 1.....1 Visit

Also, we have third custom view type

public          


        
相关标签:
2条回答
  • 2021-01-19 17:46

    Finally, developed some ugly workaround - introduced new member in custom type and explicitly queried for it.

    public class ScheduleView
    {
        public Schedule Schedule { get; set; }
        public Visit Visit { get; set; }
        **public Patient Patient{ get; set; }**
    }
    
        var query = Context.Schedule.Join(Context.Visit
        ,/*Schedule join key definition*/,/*Visit join key definition*/,
        (scheduleView, visit) => new ScheduleView 
    {Schedule = scheduleView, Visit = visit, **Patient = visit.Patient**})
    

    Now I have Patient loading properly in my custom type. Amusing, but when I investigate ScheduleView.Visiting.Patient after introducing ScheduleView.Patient I found it also loaded. Cant get the EF logic in this case. And dunno how to force loading ScheduleView.Visiting.Patient without having to load useless ScheduleView.Patient :(

    0 讨论(0)
  • 2021-01-19 17:51

    The error is spot on. Your trying to create an ObjectQuery (LINQ-Entities IQueryable), with a type (ScheduleView) which does not exist in your Model.

    You can project into this type, sure - but not affect the query with it.

    Will something like this work? (off the top of my head, untested)

    var scheduleViews = (from s in ctx.Schedules
                         join v in ctx.Visits.Include("Patient") 
                         on v.ScheduleId equals s.ScheduleId
                         select new ScheduleView 
                         { 
                            Schedule = s, 
                            Visit = v 
                         }).ToList();
    

    Your main problem is ObjectQuery<ScheduleView> is not translatable to a store expression. So do your include on the Visits entity set, not the IQueryable.

    HTH

    0 讨论(0)
提交回复
热议问题