Работа с четырьмя таблицами.
Пользователи → имеют базовую информацию о пользователе, включая идентификатор пользователя и идентификатор отдела (int)
Группы → базовая информация о группе, включая группу
GroupsMembers → таблица, которая имеет отношение между группой и ее членами, отношение многих к многим, поэтому groupid и userid являются столбцами
Отделы → информация о базовом отделе, включая deptid
У меня есть fk from departmentid в таблице users для идентификатора deparmtnet в таблице разделов.
FK из групп groupid в groupsmembers groupid FK от пользователей userid до groupsmembers userid
Это позволяет группам edmx иметь свойство навигации пользователя, которое будет иметь все члены группы.
var grp = grpSource.FirstOrDefault(g => g.GroupID == groupID)
if (grp.GroupID > 0)
{
var userQuery = from u in grp.Users
where !u.Deleted
select u;
userQuery = userQuery.OrderBy(u => u.Department.Name);
}
Я включаю Users.Department.
Проблема возникает из-за того, что пользователям не нужно иметь департамент, поэтому столбец departmentid имеет значение NULL. Если есть пользователи, для которых ведомство равно null, orderby ломается и говорит, что u.Department имеет значение null. Если ни один из отделов не является нулевым, он отлично работает. Мне нужен способ сортировки по имени Department.Name, даже если есть нулевые ведомства. Любые предложения?