我对同一个数据库表有两个不同的视图,我想对两个视图使用相同的查询。
我现在遵循丑陋的解决方案,我基本上都是查询的副本。
DbSet<uvw_MyView1> view1 = entities.uvw_MyView1;
DbSet<uvw_MyView2> view2 = entities.uvw_MyView2;
if(doQueryOnView1)
{
// huge query
view1.Where(jada jada)
}
else
{
// huge query copied here with exception of different DbSet
view2.Where(jada jada)
}
我想拥有的是更优雅的解决方案。基本上我想为两个DbSet提供相同的查询部分,这两个DbSet在列方面完全相同,但是那些返回不同的行。有什么想法吗?
答案 0 :(得分:1)
添加包含视图所有属性的界面,并由两个视图实体实现此界面。之后创建包含整个查询的方法:
public static IQueryable<T> YourHugeQueryMethod<T>(DbContext context, ...)
where T : class, IView, new()
{
DbSet<T> set = context.Set<T>();
return set.Where(...);
}