将带有声明表的SQL Server存储过程转换为Linq 2实体

时间:2016-07-13 20:15:27

标签: c# sql-server linq stored-procedures

我在将SQL Server存储过程转换为Linq查询时遇到了一些麻烦。我已经阅读了几个让它看起来很简单的教程。但部分存储过程涉及运行一个函数来填充过程中声明的表,如下所示:

DECLARE @userOrgs TABLE(OrgId INT, OrgActiveFlag BIT)

INSERT INTO @userOrgs(.......)
    SELECT OrgId, OrgActiveFlag 
    FROM someFunction

填充表的函数已经转换为C#,所以我可以在我的类中调用它,我正在实现其余的过程。当我到达查询时,有一堆内部联接要做,并且因为这个临时表被定义为var,所以我无法访问OrgId来执行最后一次连接。这是要转换的FROM块:

FROM USER_ActiveUsers AU
INNER JOIN USER_Users U ON U.Id = AU.UserId
INNER JOIN AUTH_UserIdentities UI ON UI.Id = U.Id
INNER JOIN CVRS_ClientVars CV ON CV.UserId = U.Id
INNER JOIN ORGN_Orgs O ON O.Id = CV.Value
INNER JOIN @userOrgs UO ON UO.OrgId = O.Id

这是我到目前为止所拥有的。最后一个连接是说'object'不包含“OrgId”的定义:

var records = from au in activeUsers
              join u in users on au.UserId equals u.Id
              join ui in userIdents on u.Id equals ui.Id
              join cv in clientVars on u.Id equals cv.Id
              join o in organizations on cv.Value equals o.Id.ToString()
              join ao in accessibleOrganizations on o.Id equals ao.OrgId

如何使OrgId可访问以便我可以进行最后一次加入?

0 个答案:

没有答案