相同的数据库上下文多个 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 回答
我有这样的产品配置:
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 回答