2012-04-30 2 views
2

У меня есть метод, чтобы получить количество пунктов, но получил stucked с глупым исключением:Null ссылка исключения при использовании графа

internal static bool IsCompanyInList(int companyId, int favoritecompanyId) 
     { 
      var result = _context.FavouriteCompanies.Count(c => c.CompanyId == companyId && c.FavouriteCompanyId == favoritecompanyId); // getting exception here 
      if (result >0) 
       return true; 
      return false; 
     } 

Кроме того, еще один ключ, моя таблица пуста. Никакой строки нет. Как справиться с этой ситуацией. Я также попробовал Where where. См. Ниже:

var result = _context.FavouriteCompanies.Where(criteria_here); 
+5

Вставьте отладчик в строку и посмотрите, что равно null - моя догадка была бы переменной _context. – Paddy

+1

Где вы определяете свой _context? Это статический метод, относящийся к члену экземпляра? – walther

+0

_context is static .. –

ответ

2

FavouriteCompanies - null. Вы можете сделать что-то подобное:

internal static bool IsCompanyInList(int companyId, int favoritecompanyId) 
      { 
       var result = _context.FavouriteCompanies; 
       if (result!=null) 
       { 
        return result.Any(c => c.CompanyId == companyId && c.FavouriteCompanyId == favoritecompanyId); 
       } 

       return false; 
      } 

В этом решении if (result>0) является излишним.

2

Ну, это поможет, если вы можете включить стек, но я полагаю, что коллекция FavouriteCompanies имеет в ней нуль (или, возможно, переменная _context равна null - если вы связываете множество методов вместе с «.», Вы получаете крушение поезда, где трудно сказать, что является нулевым). Вы можете обойти это защищаясь, удалив аннулирует:

var result = _context.FavouriteCompanies.Where(c => c != null).Count(...) 

хотя, честно говоря, было бы гораздо лучше, чтобы выяснить, где нуль был вставлен в FavourieCompanies и остановить его там.

2

Ошибка может быть в любом месте, где вы пытаетесь получить доступ к члену.

var result = _context.FavouriteCompanies.Count(c => c.CompanyId == companyId && c.FavouriteCompanyId == favoritecompanyId); 

- _context null? _context.FavoriteCompanies null? is FavoriteCompanies содержит запись, в которой CompanyId или FavouriteCompanyId имеет значение NULL?

Поскольку это Linq2Sql, вы можете запросить c.FavouriteCompanyId.Isnull() в предложении count перед доступом к самому члену.

1

Для меня одна из строка (или поле с нулевым значением) значение было null.

 var result = _context.FavouriteCompanies.Count(c => c.CompanyId != null && c.CompanyId == companyId && c.FavouriteCompanyId != null && c.FavouriteCompanyId == favoritecompanyId); 
Смежные вопросы