2012-03-16 2 views
0

я следующий кодForce Entity вернуть нулевое значение, если SingleResult бросить исключение

return (EseshEntities.Current.Users.Select(u => new { Comunity = u.Apartment.Building.District.City })).ToList(); 

если здание пусто, то мы получили excpetion потому не может Acces свойство нулевого права? , но есть ли какой-либо вариант в сущности, чтобы instad of excpetion возвращал значение null, поэтому, если свойство не существует, то возвратите null?

+0

Почему бы не просто создать предложение where, чтобы выбрать, чтобы не возвращать нулевые значения? –

+0

Использовать DefaultIfEmpty вместо Select –

+0

Я бы предположил, что он хочет, чтобы все пользователи независимо от того, идут ли они Comunity = null или нет. Я думаю, что вы не можете обойти проверку на null. – KroaX

ответ

2

, что по этому поводу?

return (EseshEntities.Current.Users.Select(u => new { Comunity = u.Apartment.Building ==null?null:u.Apartment.Building.District.City })).ToList(); 
+0

Согласитесь, там, похоже, нет другого способа – KroaX

+0

yee, но посмотрите здесь у нас есть u.Apartment.Building.District.City четыре свойства, так что это будет выглядеть очень сложно, чтобы проверить их всех, это жалко, что не только опция make - это если null, то значение по умолчанию, даже если foreig ключ имеет значение null. – kosnkov

+0

Свойства - это всего лишь обертки для методов, поэтому вы не можете вызывать нестатические методы, если у вас нет экземпляра –

1

Вы можете попробовать что-то вроде этого:

var list = (from u in EseshEntities.Current.Users 
      where u.Apartment.Building != null 
      select new { Comunity = u.Apartment.Building.District.City }).ToList(); 
return list; 

или вы можете попробовать это:

return (EseshEntities.Current.Users.Select(u => new { Comunity = u.Apartment.ToInstance().Building.ToInstance().District.ToInstance().City })).ToList(); 

public static T ToInstance<T>(this T self) 
{ 
    T mySelf = default(T); 

    if (self != null) 
     mySelf = self; 
    else 
     mySelf = Activator.CreateInstance<T>(); 

    return mySelf; 
} 
+0

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

+0

Вижу, вы пытались инициализировать каждое свойство в кустарнике ваших классов сущностей? Таким образом, они не являются нулевыми. –

+0

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

Смежные вопросы