Loading...
Pazzo avatar Pazzo 158 Точки

[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 158 Точки

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

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

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.