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

时间:2015-11-17 10:54:52

标签: c# entity-framework dbcontext dbset

我有这样的产品配置:

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; }

哪一切都运作良好。但是,我有一部分网站正在使用过滤的产品集,使用新视图过滤产品而不是使用实体框架过滤它们更快(使用linq查询不到5秒而不是5秒)在ef)

有没有办法可以更改ToTable值,仅用于尝试获取已过滤上下文而不必创建新实体的某个实例。

例如,我获得产品的地方 -

context.Products

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

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

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

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

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

实际上我想要一个包含以下2个dbsets的上下文:

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

1 个答案:

答案 0 :(得分:0)

好吧,我不认为有可能达到我想要的目的,所以为了解决这个问题我必须创建一个新的上下文并将我的新过滤列表放入其中。如果有人能想出更好的方法来做到这一点,请随时发表答案