Как отключить или обойти SQL_CALC_FOUND_ROWS

Когда вы обрабатываете SELECT через phpmyadmin, за кулисами, он иногда добавляет LIMIT 0,30 и / или его if (user == null) выбросить новое исключение (...); Цитата цитата = новая цитата (user.FullName, user.Email); Здесь все хорошо. ...

Вот фрагмент кода:

IUser user = managerUser.GetUserById(UserId);
if ( user==null ) 
    throw new Exception(...);

Quote quote = new Quote(user.FullName, user.Email);

Здесь все нормально. Но если я заменю строку «if» следующей:

ComponentException<MyUserManagerException>.FailIfTrue(user == null, "Can't find user with Id=" + UserId);

где реализация функции следующая:

public abstract class ComponentException<T> : ComponentException
        where T : ComponentException, new()
{
    public static void FailIfTrue(bool expression, string message)
    {
        if (expression)
        {
            T t = new T();
            t.SetErrorMessage(message);
            throw t;
        }
    }
    //...
}

Тогда ReSharper выдаст мне предупреждение: Возможно «System.NullReferenceException», указывающее на первое использование объекта «пользователь».

Q1. Почему он генерирует такое исключение? Насколько я понимаю, если user == null , то будет сгенерировано исключение и выполнение никогда не достигнет точки использования.

Q2. Как удалить это предупреждение? Пожалуйста, обратите внимание: 1. Я не хочу подавлять это предупреждение с помощью комментариев (у меня будет много похожих частей, и я не хочу превращать свой исходный код в «прокомментированный мусор»); 2. Я не хочу изменять настройки ReSharper, чтобы изменить эту проблему с предупреждения на «подсказку».

Спасибо.

Любые мысли приветствуются!

PS Я использую resharper 5.1, MVSV 2008, C #

11
задан James Skemp 20 May 2019 в 15:53
поделиться