Использование одного и того же запроса для разных DbSets в Entity Framework - PullRequest
1 голос
/ 20 марта 2012

У меня есть два разных представления к одной и той же таблице базы данных, и я хотел бы использовать один и тот же запрос к обоим представлениям.

Теперь у меня следующее уродливое решение, в котором у меня есть в основном копия запроса.

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, которые по столбцам точно одинаковы, но они возвращают разные строки.Есть идеи?

1 Ответ

1 голос
/ 20 марта 2012

Добавьте интерфейс, содержащий все свойства вашего представления, и реализуйте этот интерфейс обоими объектами представления.После этого создайте метод, содержащий весь ваш запрос:

public static IQueryable<T> YourHugeQueryMethod<T>(DbContext context, ...) 
     where T : class, IView, new()
{
    DbSet<T> set = context.Set<T>();
    return set.Where(...);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...