的概述:
我的数据库的所有表都包含一列SiteID
,它是对表“Sites
”的引用。我们的想法是按站点对表进行分区。因此,根据我的代码,我希望将此SiteID
作为默认搜索条件传递
问题
当用户登录我的网站时,我设置此SiteID
。
在我的通用存储库中,我有方法GetQuery<TEntity>()
,它返回IQueryable<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;
}
的问候,
阿萨姆
答案 0 :(得分:1)
如果应用程序中的所有实体都有列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;
}