2010-10-06 90 views
0

我有下面的SQL查询,它返回我期望的结果,我想在LINQ中完成同样的事情,但到目前为止我的结果已经不那么壮观了。正如我所看到的,主要障碍是数据来自3个独立的数据库。我能够在LINQ中完成这项工作,但速度非常慢,see here帮助将多个数据库SQL查询转换为LINQ

所以,用了闲话少说,这里是,与硬编码的Guid()是唯一的例外为获取传递:

SELECT en.ClientID, p.LastName, p.FirstName, NurseName = dm2.FirstName + ' ' + dm2.LastName, SocialWorkerName = dm.FirstName + ' ' + dm.LastName, en.EnrollmentDate, en.DisenrollmentDate, ESWorkerName = sw.FirstName + ' ' + sw.LastName, sw.Phone 

FROM CMO.dbo.tblCMOEnrollment en 
    LEFT OUTER JOIN CMO.dbo.tblSupportWorker sw 
     ON en.EconomicSupportWorkerID = sw.SupportWorkerID 
    INNER JOIN Connect.dbo.tblPerson p 
     ON en.ClientID = p.PersonID 
    LEFT OUTER JOIN aspnetdb.dbo.tblDemographics dm 
     ON en.CMOSocialWorkerID = dm.UserID 
    LEFT OUTER JOIN aspnetdb.dbo.tblDemographics dm2 
     ON en.CMONurseID = dm2.UserID 

WHERE (en.CMOSocialWorkerID = '060632EE-BE09-4057-B17B-2D0190D0FF74' 
     OR 
     en.CMONurseID = '060632EE-BE09-4057-B17B-2D0190D0FF74') 
AND (en.DisenrollmentDate IS NULL 
    OR 
    en.DisenrollmentDate > GetDate()) 

ORDER BY en.DisenrollmentDate, p.LastName 

回答

0

既然你要发出1个查询,你应该只使用1个数据上下文。将视图添加到其中一个数据库以表示其他数据库表,然后将其全部添加到一个LinqToSqlClasses文件中。

如果您不能修改任何三个数据库,请为其他三个数据库创建第四个数据库。