2011-04-12 48 views
0

有没有谁可以请解释为什么下面不工作??: 模型的定义是这样的(很简单的版本)中表达不工作对EF4.1

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

查找方法我仓库实现的定义是这样的:

public virtual IQueryable<T> Find(Expression<Func<T, bool>> where) 
{ 
    return _dbset.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有一个值,它将被完全忽略!为什么???

同样在第一个版本的实体框架或LINQ to SQL中工作正常!

在此先感谢!

+0

“......它完全被忽略”:这是否意味着查询总是返回没有记录,尽管数据库中确实存在满足FilteringRecord中定义的条件的记录? – Slauma 2011-04-12 13:38:50

回答

0

结果表达式按预期工作!该错误是由UI中的错误绑定(这是一个WPF应用程序)造成的,给FilteringRecord提供了错误的值!