что не так с этим запросом linq? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть таблица продуктов с заголовком в виде строки.

, на мой взгляд, у меня есть

    @using (Html.BeginForm("Serach","Store"))
        {

          <input type="text" name="q" class="searchbox_textbox" />
          <input  type="submit" class="searchbox_btn" />
          }

, а внутри моего контроллера -

        public ActionResult Serach(string q)
    {
        var result = storeDB.Products
                     .Where(p => p.Title.Contains(q) || string.IsNullOrEmpty(q));


        return View(result);

    }

когда я запускаю страницу и набираю слово для поиска, выдается эта ошибка

Указанное значение аргумента для функции недопустимо.[Аргумент # = 1, имя функции (если известно) = isnull] Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.SqlServerCe.SqlCeException: указанное значение аргумента для функции недопустимо.[Аргумент # = 1, имя функции (если известно) = isnull]

в чем проблема?и что мне делать, если я хочу показать пользователям сообщение, в котором говорится, что ваш поиск не соответствует ни одному продукту

1 Ответ

2 голосов
/ 08 февраля 2012

Что ж, вы должны использовать некоторую регистрацию, чтобы выяснить, что на самом деле отправляется в базу данных - но лично я бы разделил запрос, прежде чем он туда попадет:

public ActionResult Search(string q)
{
    var result = string.IsNullOrEmpty(q) ? storeDB.Products
                     : storeDB.Products.Where(p => p.Title.Contains(q));

    return View(result);
}

Это возможно что диалект SQL, поддерживаемый SQL CE, не поддерживает проверку на пустоту, которую вы использовали - и это обходит эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...