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,所以我的查询注定要失败。

EF -再次常见查询

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