Я создаю инструмент отчетности, основанный на Entity Framework и библиотеке Скотта Гатри Dynamic Linq.
Я столкнулся с проблемой при попытке выбрать необнуляемое поле из связанной таблицы, когда связанная запись не всегда существует. Например, у меня есть таблица Участника, которая имеет обнуляемый внешний ключ для таблицы Team. Это потому, что некоторые участники будут в команде, а некоторые - нет. Загвоздка в том, что я хочу получить отчет, который показывает список участников вместе с некоторой информацией об их команде, ЕСЛИ они в команде. Один из столбцов в таблице команд не имеет значения nullable, поэтому, когда я пытаюсь выбрать его, используя стандартную или динамическую проекцию:
var standardProjection = data.Select(i => new
{
i.FirstName,
i.ParticipantTeam.CaptainPickupFlg <--- Non Nullable Boolean
});
var dynamicProjection = data.Select("new (FirstName, ParticipantTeam.CaptainPickupFlg)");
Я получаю сообщение об ошибке при попытке перечислить результаты:
"Ошибка приведения к типу значения" Boolean ", так как материализованное значение является нулевым. Либо универсальный параметр типа результата, либо запрос должен использовать обнуляемый тип."
Как я могу избежать этой ошибки и просто материализовать ParticipantTeam.CaptainPickupFlg просто как обнуляемый бул в анонимном типе?
Динамический Линк Скотту: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx