2012-05-29 2 views
1

Im пытается использовать LINQ для SharePoint для извлечения и фильтрации простой список с полем поискаLookup Field в LINQ к Sharepoint иногда не получает извлекаться

var list = _db.Leaves.Where(x =>x.Employee != null && x.Employee.Id == empId).ToList(); 

проблема иногда случайным образом полевой работник является недействительным! Я не знаю почему! так странно, что это происходит случайным образом, что заставляет его бросать исключение каста, кто-нибудь знает, почему это происходит?

<Field Type="Lookup" DisplayName="Employee" Required="True" EnforceUniqueValues="FALSE" List="Lists/Employees" ShowField="EnFullName" ID="{26183411-9bbf-48a1-b2f8-3388b98c7fef}" Name="Employee" ColName="int2" RowOrdinal="0" Indexed="TRUE" RelationshipDeleteBehavior="Restrict" /> 
+0

Почему x.Employee null? Кажется, проблема с данными. Вам нужно проверить данные Leaves (в отладчике или в DB). Зачем бросать исключение, возможно потому, что x равно null или x.Employee.Id имеет значение null. Поделиться stacktrace. Обновите вопрос с дополнительной информацией и четким намерением. – Tilak

ответ

0

Сотрудник будет иметь значение null, если для этого поля нет значения.

Просто потому, что это обязательное поле не означает, что поле всегда будет иметь значение. «Требуется» относится только к форме веб-формы, которая является списком, это не является ограничением самой фактической базы данных. Например, в коде вы можете создать/отредактировать объект и установить это поле в нуль без каких-либо проблем, даже если это необходимо. Если у вас есть библиотека документов при загрузке документа, он создает элемент списка, но не заполняет ни одно из полей; это не до тех пор, пока элемент не будет отредактирован, что поиск будет не нулевым (даже если он доступен только через веб-интерфейс). Есть и другие примеры, но идея остается. В SharePoint вам необходимо указать нулевые поля.

Смежные вопросы