Linq to AD Query не работает - PullRequest
       29

Linq to AD Query не работает

0 голосов
/ 20 сентября 2011

user.fld_usr_name - строка со случайным именем значения

пользователь - это объект, заданный в качестве параметра

ByVal user As GUser

это запрос linq, который не работает

Dim result = (From usr In users Where usr.Name.Contains(user.fld_usr_name) Select usr).ToList()

это тот, который работает

Dim result = (From usr In users Where usr.Name.Contains("random name") Select usr).ToList()

это ошибка

Object reference not set to an instance of an object.

Я использую это в Linq для библиотеки Active Directory

что, вероятно, означает, что это linq для сущностей

Я пробовал все

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Еще одна мысль по этому поводу состоит в том, что в активном каталоге действительно неточно определено, что такое «пользователь» или «группа». Например, с группами; у вас есть группы безопасности и группы рассылки. Но AD может быть реализован как имеющий что-то вроде групп безопасности, групп авторизации, групп рассылки, групп местоположений и т. Д. Кроме того, ваш ИТ-отдел может настроить его так, чтобы подразделения представляли матричные группы и так далее. Но когда вы скажете AD, чтобы вы вернули вам список групп безопасности, он вернет вас ВСЕ, которое использовало тип группы безопасности для его создания.

Теперь, если вы сделаете резервную копию и посмотрите на нее с другой стороны, вы обнаружите, что не все «Пользователь» на самом деле являются пользователями. Некоторые используются по-разному и поэтому не используют свойство «Имя». Я несколько раз сталкивался с этим, когда подключал подключенное устройство к OU, которое, по моему мнению, было уместно, а затем пытался вернуть все имена в этом OU. Если поле на самом деле не используется, оно вернется к нулю и взорвет ваше приложение. Это плохой дизайн AD? Обычно. Многие организации имеют привычку создавать пользователей или группы для выполнения задач, а не делать это таким образом, который физически представляет организацию. Например, создание учетной записи пользователя, которая используется только веб-приложением, или создание новых групп только для того, чтобы включить несколько разрешений для нескольких особых людей, как я описал ранее. И проблема с этим, конечно, в том, что вы пытаетесь взглянуть на это с точки зрения базы данных при кодировании вашего приложения. Но это не база данных; это просто коллекция коллекций. Нестандартный, динамичный, плоский файл. (

Так что, возможно, ваш запрос linq может возвращать zilch, поскольку поле Name для этой коллекции фактически пустое. Именно по этой причине я сейчас использую только GUID или Native GUID. В тех случаях, когда у вас есть только имя, затем используйте поисковик и захватите направляющие, а затем используйте эти направляющие для создания записи каталога, которая будет иметь искомую информацию.

0 голосов
/ 06 октября 2011

Я вошел в исходный код этого плагина.

LINQ просто не работал, как это должно быть с vb.net, как с c #.Плагин был C # код, но это не должно иметь значения.Очень странно.

Я забыл подробности, так как это было давно, но он должен был что-то делать с тем фактом, что он передает свойство в качестве ссылки, а не значение.Или тот факт, что он должен быть статическим ... Если бы я знал, что я это исправлю

, я использовал общее свойство, чтобы загрузить всех своих пользователей, и работал с этим.Если кто-то знает, как исправить эту ошибку, пожалуйста, сообщите мне

...