一次向多个LINQ to SQL构造添加列限定符

时间:2012-04-01 19:31:46

标签: .net linq linq-to-sql

我有一个dbml,我从SQL Server 2008数据库中添加了15个以上的表。然后我有大约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

正如我所说,LINQ语句要复杂得多,并且每个语句通常涉及多个表。

关于如何在不编辑每个查询和插入

的情况下实现此功能的任何聪明的想法
        a.version = version_param

所涉及的每个表的限定符?

1 个答案:

答案 0 :(得分:2)

为您的上下文创建代理

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 上下文。