سؤال

وفشل الاستعلام التالي لتحميل الجداول عندما تنفيذ ما يلي:

IEnumerable<Bookmark> tempBookmarks = ListBookmarksByUserID(userID);
IEnumerable<CandidateWithBookmarks> results = (from c in _internshipEntities.CandidateSet
                                            .Include("education")
                                            .Include("progress")
                                            .Include("contacts")
                                            .Include("availability")
                                            .Include("hosttypes")
                                            .Include("hostsizes")
                                            .Include("hostcapacities")
                                            .Include("hoststates")
                                            .Include("users")
                       join b in tempBookmarks on c.ID equals b.candidates.ID
                       select new CandidateWithBookmarks()
                                  {CandidateObject = c, BookmarkObject = b});
return results;

ولقد وجدت بعض المواد ذات الصلة لهذه المشكلة، وهي <لأ href = "http://blogs.msdn.com/alexj/archive/2009/06/02/tip-22-how-to-make-include -really-include.aspx "يختلط =" نوفولو noreferrer "> المادة اليكس جيمس" كيفية جعل تضمين تضمين حقا ". الحل يأتي مع واحد التحذير:

<اقتباس فقرة>   

لهذا العمل النهائية المختارة يجب أن تكون الكيانات الخاصة بك، أي اختيار آخر بدلا من تحديد جديد {...}

والتي من الواضح قضية لكتلة أعلاه من التعليمات البرمجية. هل هناك أي العمل في أنحاء أخرى معروفة لهذه المشكلة التي لن كسر تحميل حريصة؟

هل كانت مفيدة؟

المحلول

وأعتقد أن حل هذه ولكنه قد يعمل فقط لهذا المثيل معينة، عن طريق تحريك يشمل بعد الانضمام، يظهر الاستعلام للعمل:

IEnumerable<CandidateWithBookmarks> results = (
    from b in tempBookmarks
    join c in _internshipEntities.CandidateSet
                                 .Include("education")
                                 .Include("progress")
                                 .Include("contacts")
                                 .Include("availability")
                                 .Include("hosttypes")
                                 .Include("hostsizes")
                                 .Include("hostcapacities")
                                 .Include("hoststates")
                                 .Include("users")
    on b.candidates.ID equals c.ID
    select new CandidateWithBookmarks(){CandidateObject = c, BookmarkObject = b});

وتحرير: استفسار آخر لدي مماثل لهذا يتطلب وجود صلة خارجية أيضا، مما يخلق بعض القضايا لأنه بعد ذلك يهم ما يمكنك الانضمام إلى ما، على عكس هذا المثال، لكنه ما زال قابلة للتنفيذ

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top