2013-01-24 17 views
7

यहां दी गई लैम्ब्डा अभिव्यक्ति है जिसका उपयोग मैं User तालिका को आज़माने और शामिल करने के लिए कर रहा हूं, जो एक त्रुटि फेंकता है।व्युत्पन्न मॉडल संबंधित कक्षा

ICollection<Activity> activity = db.Activities 
      .Include(i => i.Project.ProjectDoc.OfType<Cover>().Select(v => v.User)) 
      .Where(u => u.UserID == WebSecurity.CurrentUserId) 
      .OrderByDescending(d => d.DateCreated).ToList(); 

include स्टेटमेंट इस त्रुटि

शामिल पथ अभिव्यक्ति प्रकार पर परिभाषित एक नेविगेशन संपत्ति का उल्लेख करना चाहिए देता है। संदर्भ नेविगेशन गुणों के लिए बिंदीदार पथ का उपयोग करें और संग्रह नेविगेशन गुणों के लिए ऑपरेटर का चयन करें।

प्रश्न में मॉडल

public abstract class ProjectDoc 
{ 
    public int ProjectDocID { get; set; } 
    public int ProjectID { get; set; } 
    public string DocTitle { get; set; } 
    public string Status { get; set; } 
    public string Access { get; set; } 
    public DateTime DateCreated { get; set; } 


    public virtual ProjectDocAccess ProjectDocAccess { get; set; } 
    public virtual Project Project { get; set; } 
    public virtual ICollection<Comment> Comment { get; set; } 
    public ICollection<ProjectDocVote> ProjectDocVote { get; set; } 
} 
public class Segment : ProjectDoc 
{ 
    public string Content { get; set; } 
} 
public class Cover : ProjectDoc 
{ 
    public string CoverURL { get; set; } 
    public int UserID { get; set; } 
    public User User { get; set; } 
} 

मैं कैसे प्रकार Cover की ProjectDoc के लिए User तालिका में शामिल हैं?

अद्यतन: उत्तर प्रति जवाब। मैंने इस तरह दिखने के लिए Cover के लिए मॉडल को अपडेट किया है और इसमें शामिल हैं जिन्हें मैंने कहा था कि त्रुटि उत्पन्न हुई थी। अब मैं डेटा प्राप्त कर सकते हैं:

public class Cover : ProjectDoc 
{ 
    public string CoverURL { get; set; } 
    public int UserID { get; set; } 
    public virtual User User { get; set; } 
} 

उत्तर

2

यह वर्तमान में not supported है। व्युत्पन्न प्रकारों पर उत्सुक लोडिंग संबंध काम नहीं करते हैं। सबसे अच्छा आप कर सकते हैं कि सभी आवश्यक उपयोगकर्ताओं को पहले से ही लोड किए गए कवर के लिए लोड करने के लिए अलग-अलग क्वेरी निष्पादित करना है और ईएफ को अपना जादू करने दें (इसे पहले से लोड की गई इकाइयों पर अपने नेविगेशन गुणों को भरना चाहिए लेकिन आपको आलसी लोडिंग बंद करनी होगी)।