Выражение не работает против EF4.1 - PullRequest
0 голосов
/ 12 апреля 2011

Кто-нибудь может объяснить, почему не работает следующее: модель определяется так (очень простая версия)

 public class Monument
{
        [Key]
        public int? MonumentId { get; set; }
        public string Name { get; set; }
}

Метод Find в моей реализации репозитория определяется следующим образом:

public virtual IQueryable<T> Find(Expression<Func<T, bool>> where)
{
    return _dbset.Where(where);
}

Параметр where получает значение следующим образом:

 whereClause = c => (   (FilteringRecord.MonumentId <= 0 ? 
true : c.MonumentId == FilteringRecord.MonumentId) 

&& (String.IsNullOrEmpty(FilteringRecord.Name) ? 
true :c.Name.Contains(FilteringRecord.Name))        );

Так что, если значение FilteringRecord.MonumentId равно числу, я получаю нужную запись, но если FilteringRecord.Name имеет значение, оно полностью игнорируется !! Почему ???

То же самое отлично работает на первой версии Entity Framework или LINQ to SQL !!

Спасибо заранее !!

1 Ответ

0 голосов
/ 12 апреля 2011

Оказывается, что выражение работает как положено! Ошибка была вызвана неправильной привязкой в ​​пользовательском интерфейсе (это приложение WPF), в результате чего FilteringRecord передал неправильные значения!

...