Стремитесь загрузить свойства навигации, чьи ключи не равны нулю - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь загрузить свойства навигации для объекта, но в случае отсутствия навигационного свойства или свойства NULL мой запрос возвращает NULL Я хочу, чтобы он только возвращал свойства навигации с сохраненными фактическими значениями, а не с NULL. Ниже приведен фрагмент того, что я имею до сих пор, в основном я получаю список свойств навигации в объекте «Пользователь», затем включаю каждую, но в некоторых записях для RoleId установлено значение Null, что делает мой запрос возвращаемым NULL

 public async Task<T> FindSingleAsync(Expression<Func<T, bool>> predicate)
        {
            var query = _table.AsQueryable()
                        .AsNoTracking()
                        .Where(predicate);

            foreach (var prop in Context.Model.FindEntityType(typeof(T)).GetNavigations().Where(x => x != null))
            {
                query = query.Include(prop.Name);
            }
            return await query.FirstOrDefaultAsync().ConfigureAwait(false);
        }

// Пример таблицы

public class User{
      public int UserId {get; set; }
      public Role Role {get; set;}
      public int? RoleId {get; set;}  //In database has NULL value
      public Group Group {get; set;}
      public int? GroupId {get; set;} //In database has value of 1
}

~ Пользователь ~

|  UserId |  RoleId  |  GroupId  |
|   1     |  NULL    |    1      |
|   2     |     2    |    4      |

Редактировать То же запрос работает для пользователя с идентификатором 2 и не выполняется для пользователя с идентификатором 1

...