我有一个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
所涉及的每个表的限定符?
答案 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 上下文。