Episerver пустой атрибут
Я пытаюсь выполнить поиск среди всех пользователей сообщества, чтобы получить список людей, у которых нет настраиваемого атрибута.
Используя запрос StringCriterion, есть ли способ сопоставления с нулем, а не со значением?
Я попробовал следующий код, но он не работает.
private static UserCollection GetAllUsersWithNoCode()
{
UserQuery query = new UserQuery();
StringCriterion criterion = new StringCriterion();
criterion.Value = null;
query[AttributeNames.CommunityUser.AUTO_LOGIN_TOKEN] = criterion;
return CommunitySystem.CurrentContext.DefaultSecurity.GetQueryResult(query);
}
Заранее спасибо всем, кто может помочь...
2 ответа
Только что получил ответ от поддержки Episerver. Они утверждают, что таким способом невозможно запросить пользовательские атрибуты. Решение состоит в том, чтобы вручную добавить строки в БД (для всех пользователей) с пустыми строками, а затем использовать значение string.empty для поиска результатов.
Не совсем тот ответ, на который я надеялся, но позже я опробую и обновлю результаты...
Я вижу, что это уже решено, но есть способ проверить нулевые значения. Вы можете проверить нулевое значение, используя что-то вроде этого, я не уверен, сработает ли это, если атрибут не создан для конкретного объекта (объектов): рассмотрите этот псевдокод, я не проверял, будет ли это компилироваться.
public class NullStringCriterion : StringCriterion
{
public override string GetQuery(string propertyName)
{
return String.Format(" ({0} IS NULL) ", propertyName);
}
}
а потом:
private static UserCollection GetAllUsersWithNoCode()
{
UserQuery query = new UserQuery();
query[AttributeNames.CommunityUser.AUTO_LOGIN_TOKEN] = new NullStringCriterion();
return CommunitySystem.CurrentContext.DefaultSecurity.GetQueryResult(query);
}