2016-05-17 2 views
0

У меня возникли проблемы с выяснением, почему мой код не работает. Когда поле пустое, оно просто загружается непрерывно. Кроме того, когда поле занято добавлением чего-то в четвертый раз, реплицируется ошибка. Любая помощь?Необработанное исключение произошло во время выполнения пустого поля

private async Task<City> RetrieveCity(string name) 
{ 
    // Instantiate return variable 
    City city = null; 

    // Find id in ProductLines table 
    var cities = await db.Cities.Where(c => c.CityName.Equals(name)).ToListAsync(); 
    city = cities.First(); 

    return city;   
} 
+0

Что вы имеете в виду _field_? Параметр 'name'? – khlr

+0

Просто добавьте блок Try-Catch к вашему коду и посмотрите, что хранится в переменной исключения в режиме отладки. В 95% всех исключений можно решить, когда разработчик может читать и понимать информацию, содержащуюся в свойстве InnerException. –

ответ

2

Убедитесь, что cities.Count()> 0, прежде чем пытаться получить первый элемент из списка.

private async Task<City> RetrieveCity(string name) 
{ 
// Instantiate return variable 
City city = null; 

// Find id in ProductLines table 
var cities = await db.Cities.Where(c => c.CityName.Equals(name)).ToListAsync(); 
if(cities!=null && cities.Count()>0) 
{ 
    city = cities.First(); 
} 
return city;   
} 

Или просто вы можете получить только только один, используя FirstOrDefault для условий согласования, как

private async Task<City> RetrieveCity(string name) 
{ 
    var city = await db.Cities.FirstOrDefault(c => c.CityName.Equals(name)); 
    return city;   
} 
3

Как упомянул Maciej, очень вероятно, что вы видите эффект , который постоянно загружается, потому что исключение выбрано неправильно, и пользовательский интерфейс остается в . Загрузка -state.

Ошибка может возникнуть из-за того, что ваш запрос возвращает пустой список. Позже вы вызываете First(), что вызывает эту ошибку, если список cities пуст.

Вы могли бы упростить способ, как это:

private async Task<City> RetrieveCity(string name) 
{ 
    return await db.Cities.FirstOrDefaultAsync(c => c.CityName.Equals(name));   
} 
Смежные вопросы