1


概述:
我数据库的所有表都包含一个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;
}

问候,
阿萨姆邦

4

1 回答 1

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;
}
于 2013-07-21T08:04:55.870 回答