如何使用实体框架添加默认搜索条件(或谓词)
本文关键字:条件 谓词 搜索 默认 何使用 实体 框架 添加 | 更新日期: 2023-09-27 18:24:01
概述:
我的数据库中的所有表都包含一个列SiteID
,它是对表"Sites
"的引用。这个想法是按站点对表进行分区。因此,根据我的代码,我想将此SiteID
作为默认搜索条件
问题
当任何用户登录我的网站时,我都会设置此SiteID
。在我的Generic Repository中,我有一个返回IQueryable<TEntity>
对象的方法GetQuery<TEntity>()
。在下面的方法中有没有一种方法可以附加这个默认搜索条件
注意:我有一种感觉,这更多的是一种与设计相关的问题,而不是实体框架。
public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class
{
return from query in DbContext.Set<TEntity>()
join site in DbContext.Set<Site>() on "JOIN_CONDITION??"
equals Site.SiteID
select query;
}
问候,
阿萨姆
如果应用程序中的所有实体都有列SiteID
,则创建一些接口来定义SiteID属性
public interface ISiteDependent // of course consider better domain specific name
{
int SiteID { get; set; }
}
并让你的实体实现它。使用这个接口作为通用约束:
public IQueryable<TEntity> GetQuery<TEntity>()
where TEntity : class, ISiteDependent
{
return from query in DbContext.Set<TEntity>()
join site in DbContext.Set<Site>()
on query.SiteID equals site.SiteID // SiteID is available now
select query;
}