EF - 再次查询

时间:2011-04-05 15:46:36

标签: c# entity-framework

参考this post,不幸的是我再次遇到了一些问题。

实际上,并非所有实体都包含相同的公共属性,但是我需要继承/实现我的接口,因此,在某人的情况下,属性只是声明性的,否则对于其他情况。

问题在于:

public static IQueryable<T> Create<T>(ObjectContext context) 
    where T : class, IEntity
{         
    var query = context.CreateObjectSet<T>().AsQueryable();         
    return query.Where(x => x.CommonProperties == "some value"); // problem here!!    
} 

实际上,如果我的实体(文档)都不包含公共属性或其中任何一个,则最终查询将不可浏览,并且将生成异常。

我尝试使用以下代码段但没有成功:

System.Reflection.PropertyInfo p = query.ElementType.GetProperty("common1");
if (p != null) query = query.Where(x => x.common1 == "value.."); // problem here!!

在这种情况下,p变量永远不会null,因此我的查询将失败...

请帮帮我..

1 个答案:

答案 0 :(得分:1)

ParameterExpression itemParameter = Expression.Parameter(typeof(T));
return query.Where(Expresion.Equal(Expression.Property(itemParameter, "COMMONPROP_NAME"), Expression.Constant("VALUE")));