繁体   English   中英

对实体框架中的不同DbSet使用相同的查询

[英]Using same query for different DbSets in Entity Framework

我对同一数据库表有两个不同的视图,并且我想对两个视图使用相同的查询。

我现在有以下丑陋的解决方案,其中我基本上有查询的副本。

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具有相同的查询部分,但是它们返回不同的行。 有任何想法吗?

添加包含视图的所有属性的接口,并通过两个视图实体实现此接口。 在包含整个查询的create方法之后:

public static IQueryable<T> YourHugeQueryMethod<T>(DbContext context, ...) 
     where T : class, IView, new()
{
    DbSet<T> set = context.Set<T>();
    return set.Where(...);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM