我有一个dbml,我从SQL Server 2008数据库中添加了超过15个表。然后,我有大约50个LINQ到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
每个相关表格的限定符?
为您的上下文创建一个代理
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上下文。