Entity Framework не возвращает ноль - PullRequest
1 голос
/ 13 февраля 2012

Я немного запутался здесь.Если мой запрос ничего не возвращает, почему купон не пуст?И как мне проверить на ноль?

Coupon coupon;

using (var db = new KupongEntities())
{
    coupon = (from p in db.Coupon
        where p.CouponID == 123
        select p).SingleOrDefault();
}

if (coupon != null)
{
    //test
}

1 Ответ

0 голосов
/ 25 мая 2012

Если мой запрос ничего не возвращает, почему купон не пуст?

Ваш вопрос сбивает с толку. Вы говорите, что выполняете этот запрос и не получаете значение null, несмотря на то, что думаете, что результата быть не должно? Затем происходит одно из трех:

  1. Вы ошибаетесь, что результата нет.
  2. Вы правы, что нет результата, но неправильно, что возвращаемое значение не null.
  3. Coupon является структурой.

Я дам вам преимущество сомнения и предположу, что 1. и 2. это не так. В последнем случае coupon получит значение по умолчанию для экземпляра Coupon. Значением по умолчанию для структуры является то, в котором для всех полей структуры установлено значение по умолчанию. В этом случае вы должны сказать

if(coupon != default(Coupon)) {
}

Но тогда возникает неприятная проблема, когда экземпляр по умолчанию Coupon в любом случае может быть допустимой записью в вашей базе данных. Я бы пересмотрел создание Coupon структуры на твоем месте.

А как мне проверить на ноль?

Хорошо, если Coupon является ссылочным типом, то в точности то, что у вас есть, хорошо. Если Coupon является структурой, вы проверите так, как я показал выше.

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