相同的数据库上下文多个 ToTable

Same db context multiple ToTable

我有这样的产品配置:

internal sealed class ProductConfiguration : EntityTypeConfiguration<Product>
{
    /// <summary>
    /// Initializes a new instance of the <see cref="ProductConfiguration"/> class.
    /// </summary>
    public ProductConfiguration()
        : base()
    {
        // Configure Properties
        HasKey(n => new { n.ID });

        // Specify the name of the table to get the data from
        ToTable("vw_Products");
    }
}

然后我可以使用上下文

public IDbSet<Product> Products { get; set; }

这一切都很好。但是,我网站的一部分正在使用经过过滤的产品集,使用新视图过滤产品比使用 entity framework 过滤产品更快(使用 1 秒以下而不是 5 秒ef)

中的 linq 查询

有没有一种方法可以仅针对尝试获取过滤上下文的特定实例更改 ToTable 值,而无需创建新实体。

例如,我在哪里获得产品 -

context.Products

我可以更改 table 以查看新视图吗?

我尝试复制配置以查看新视图,然后添加一个新的数据库集:

public IDbSet<Product> DesignerProducts { get; set; }

但这似乎不起作用(除非有办法将配置指向特定的数据库集?)

所以我想我的问题是,有没有办法将配置指向特定的数据库集(如果实体相同),或者有没有办法在查询时将上下文指向特定的视图

实际上我想要一个包含以下 2 个数据库集的上下文:

public IDbSet<Product> Products { get; set; }
public IDbSet<Product> DesignerProducts { get; set; }

好的,我认为不可能实现我想要的,因此为了解决这个问题,我不得不创建一个新的上下文并将新的过滤列表放入其中。如果有人能想到更好的方法,请随时 post 回答