EF -再次常见查询
本文关键字:常见 查询 EF | 更新日期: 2023-09-27 17:49:19
关于这篇文章,不幸的是我又遇到了一些问题。
实际上,并非所有的实体都包含相同的公共属性,尽管如此,我需要继承/实现我的接口,因此,在某些情况下,属性仅是声明性的,否则在其他情况下。
问题在这里:
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
,所以我的查询注定要失败。
ParameterExpression itemParameter = Expression.Parameter(typeof(T));
return query.Where(Expresion.Equal(Expression.Property(itemParameter, "COMMONPROP_NAME"), Expression.Constant("VALUE")));