【发布时间】:2017-09-10 11:09:00
【问题描述】:
目前,我有一个这样的通用存储库:
public virtual IQueryFluent<TEntity> Query(Expression<Func<TEntity, bool>> query)
{
return new QueryFluent<TEntity>(this, query);
}
并像这样实现:
var obj = _repository.Query(x => x.RoleID == ID).Select().FirstOrDefault();
因为 RoleID 出现在所有实体中,所以我想像这样在通用存储库中构建一个通用的表达式:
//Check and get RoleID if exist this column
PropertyInfo info = typeof(TEntity).GetProperty("RoleID");
if (info != null)
Expression<Func<TEntity, bool>> filter = (p => p.RoleID ??? or p.info ??? == 5);
我们如何在通用存储库的 TEntity 中构建一个包含未知列的过滤器?或者我们可以为Filter传递一个where子句的字符串吗?
我的目的是,我只需要这样简单结构的查询数据:
var obj = _repository.Query().Select().FirstOrDefault();
请指教。
谢谢。
【问题讨论】:
-
最好是在所有实体上实现一些接口,如
IHasRole {int RoleID{get;set;}}并使用它。 -
感谢 Evk 的帮助。
标签: c# entity-framework-4 repository-pattern