Добавление спецификатора столбца сразу ко многим конструкциям LINQ to SQL - PullRequest
1 голос
/ 01 апреля 2012

У меня есть dbml, к которому я добавил более 15 таблиц из базы данных SQL Server 2008.Затем у меня есть около 50 запросов LINQ to SQL, некоторые довольно сложные, работающие с одной или несколькими из этих таблиц.

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

, например,

dim q = from a in dbc.T1, b in dbc.T2
        where a.c1=b.c2 And
        a.c2 > param1

должно стать

dim q = from a in dbc.T1, b in dbc.T2
        where a.c1=b.c2 And
        a.c2 > param1 And
        a.version = version_param And 
        b.version = version_param

AsЯ сказал, что операторы LINQ намного сложнее и обычно включают в себя несколько таблиц в каждой.

Любые умные идеи о том, как я могу это реализовать, не редактируя каждый запрос и не вставляя

        a.version = version_param

квалификатор для каждой участвующей таблицы?

1 Ответ

2 голосов
/ 01 апреля 2012

Создайте прокси для вашего контекста

class ContextProxy
{
   MyDbContext _dbc;
   int _t1version = ...;
   ... etc

   public ContextProxy(MyDbContext dbc){ _dbc = dbc; }

   public IQueryable<T1Type> T1
   {
      get{ return _dbc.T1.Where( t => t.version == _t1version );
   }

   ... etc
}

и затем используйте его вместо контекста dbc в существующих запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...