表达式不适用于EF4.1

时间:2011-04-12 13:21:07

标签: expression entity-framework-4.1

是否有人可以解释为什么以下不起作用?: 模型定义如下(非常简单的版本)

 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 :(得分:0)

原来表达式正在按预期工作!该错误是由UI中的错误绑定(这是一个WPF应用程序)引起的,为FilteringRecord提供了错误的值!