【问题标题】:EF doing prefilter table by property/typeEF 按属性/类型进行预过滤表
【发布时间】:2014-09-12 08:54:41
【问题描述】:

我正在使用 EF 6,并使用代码优先迁移。

我之前有一个表Requests,它只包含一种类型的请求,现在我开始在其中添加不同类型的请求,并且总是在使用 LINQ 查询它时,我必须这样做:

_repository.Requests.Where(r => r.Type == Type.BestRequest &&......)
_repository.Requests.Where(r => r.Type == Type.AwesomeRequest &&......)

在我的DbContext 中,我有这个DbSet,它总是返回:

public DbSet<Request> Requests { get; set; }

有没有办法预先过滤请求,通过这样做::

_repository.BestRequests.Where(r => ......)

但我仍然希望在数据库中有一个名为 Requests 的表。

【问题讨论】:

  • 您是否使用在数据库中具有鉴别器列的 TPH 继承?
  • 不,我没有使用它。
  • 你已经有了一个仓库。为什么不提供_repository.BestRequests 之类的属性?
  • @YuliamChandra 类型只是一个枚举。
  • @GertArnold 我不确定我是否理解。那么BestRequests 返回什么?我只有Requests 表,没有名为BestRequests 的数据库表

标签: c# .net asp.net-mvc linq entity-framework


【解决方案1】:

你可以看看这个link

我以前用过它,它完全符合我的要求。但问题是我总是不得不“应用”过滤器。

【讨论】:

    【解决方案2】:

    我在 IRepository 中创建了额外的属性,并像这样在 DbContext 中实现了它们。

        IQueryable<Request> IRepository.BestRequests {
            get { return Requests.Where(r => r.Type == Type.BestRequest); }
        }
    
    
        IQueryable<Request> IRepository.AwesomeRequests {
            get { return Requests.Where(r => r.Type == Type.AwesomeRequest); }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 2019-08-23
      • 2017-05-05
      • 1970-01-01
      相关资源
      最近更新 更多