Софтуерно Инженерство
Loading...
Pazzo avatar Pazzo 159 Точки

[Homework] DB Advanced - Intro to EF - Pr. 07 Employees and Projects

Здравейте, 

чудя се над следното нещо - при тази задача, за дърпането на служителите от базата ползвам тази заявка: 

                var employees = db.Employees
                    .Include(e => e.EmployeesProjects)
                    .ThenInclude(ep => ep.Project)
                    .Where(e => e.EmployeesProjects
                                .Any(ep => ep.Project.StartDate >= projectTimeframeStart &&
                                ep.Project.StartDate <= projectTimeframeEnd))
                    .Take(30)
                    .ToList();

 Чуденето ми е свързано с факта, че тази заявка успешно работи до 3тия служител включително - т.е. дърпа си нужната информация, даже по-надолу нормално си печатам служители, мениджъри, проекти, дати... 

На четвъртия служител обаче, програмата гърми с NullReferenceException, защото както се оказа Manager пропъртито в служителя е празно, както и на всички служители надолу. 

Проблемът го реших лесно с .Include(e => e.Manager), но въпросът ми е по-скоро принципен - защо работи до един момент, и после спира? Не би ли трябвало да гърми още в началото щом има проблем, или да си работи нормално до края? Аз поначало умишлено не инклуднах мениджърите, тъй като когато си направя лист само с db.Employees.ToList() по принцип мениджърите им не бяха null, а си имаха инклудната пълната информация. 

Нялкой има ли идея защо така работи? Или по-скоро не работи? ;)

1
Databases Advanced - Entity Framework 07/11/2017 18:43:13
Pazzo avatar Pazzo 159 Точки

Много благодаря за разясненията, Влади! Makes perfect sence now. Когато ми минат "Code-First" занимавките, ще отворя пак тая задача да дебъгвам и разгледам в детайли ;) 

Мерси и на теб Жоро, че пусна темата в ФБ групата. Наистина, за съжаление покрай тея ФБ групи форума доооооста замря, помня какво беше по време на PFundamentals например... В крайна сметка - от нас зависи да го поддържаме жив ;)

0