帮助将多DB SQL查询转换为LINQ

时间:2010-10-06 20:03:52

标签: sql linq linq-to-sql

我有以下SQL查询,它返回我期望的内容,我想在LINQ中完成同样的事情,但到目前为止我的结果并不那么引人注目。我认为,主要障碍是数据来自3个独立的数据库。我能够在LINQ中实现这一点,但它非常慢,see here

所以,进一步说,这里是硬编码的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

1 个答案:

答案 0 :(得分:0)

由于您要发出1个查询,因此您应该只使用1个datacontext。将视图添加到其中一个数据库以表示其他数据库表,然后将其全部添加到一个LinqToSqlClasses文件中。

如果您无法修改三个数据库中的任何一个,请创建第四个数据库,其中包含对其他三个数据库的视图。