Структуры сущности - ToList () и 0 записей - PullRequest
4 голосов
/ 14 января 2010

Когда вы ожидаете набор записей (> = 1 запись), как вы проверяете ситуацию с 0 записями?

Например:

RivWorks.Model.FeedStoreReadOnly store = new RivWorks.Model.FeedStoreReadOnly(AppSettings.FeedAutosEntities_connString, AppSettings.FeedAutosEntities_metadata, AppSettings.FeedAutosEntities_providerName);
RivWorks.Model.NegotiationAutos.Entities _dbFeed = store.ReadOnlyEntities();
var companyDetails = from a in _dbFeed.ClientClientMap where a.CompanyID == CompanyId select a;
return companyDetails.ToList();

Когда возвращается, происходит ошибка в ToList (), потому что нет записей, удовлетворяющих предложению WHERE. Итак, каков будет правильный способ проверки на 0 записей и каков будет рекомендуемый возврат в этот момент?


Дополнение основано на ответе ниже :

if (companyDetails.Count() > 0)
    return companyDetails.ToList();
else
{
    List<RivWorks.Model.NegotiationAutos.ClientClientMap> ret = new List<RivWorks.Model.NegotiationAutos.ClientClientMap>();
    ret.Add(companyDetails.FirstOrDefault());
    return ret;
}

Еще не тестировал, но это (логично), похоже, работает. Интересно, есть ли более простой способ?


Примечание

Я понял это. Учетная запись, под которой работал SQL, не получила от администратора базы данных правильный набор разрешений. Мы изменили все операторы GRANT для новых таблиц / представлений, и теперь они работают.

Я все еще не уверен, каков правильный ответ. Я склоняюсь к созданию пустой (новой) записи и добавлению в Список, чтобы у наших ребят, получающих Список, было что отображать (для редактирования, если ничего больше) ...

Ответы [ 3 ]

6 голосов
/ 14 января 2010

Вам не нужно проверять пустоту, прежде чем звонить ToList. ToList отлично работает с запросом, который не возвращает записей; он просто вернет пустой список. Вы можете использовать свой оригинальный код, и все будет работать нормально, с данными или без данных в таблице.

Большинство сеток и т. П. Также отлично справляются с пустым списком; они обычно отображают пустую строку для пользователя, чтобы создать первую запись.

0 голосов
/ 20 октября 2016

Другая причина может заключаться в том, что строка подключения к базе данных содержит имя базы данных, отличное от того, которое вы намереваетесь использовать. Entity Framework (если он настроен и имеет права на это) просто создает другую базу данных на основе настроенной строки подключения, и может случиться, что запрашиваемая таблица будет пустой.

0 голосов
/ 14 января 2010

Таблица ClientClientMap отсутствует в базе данных

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