2010-07-08 19 views
1

加入它的結果,我有:LINQ:調用存儲過程,並與IQueryable的

  • 存儲過程來檢索郵政編碼在半徑圍繞另一個郵政編碼

  • 與聯繫人表

我通過一個IQueryable接口獲取聯繫人信息,我用各種擴展方法對其進行了擴展,以便按年齡等篩選結果。

我遇到的麻煩是添加一個IQueryable擴展方法,該方法調用上述存儲過程(半徑內的郵政編碼),然後將這些郵政編碼與我的IQueryable聯繫人列表結合在一起。

任何想法如何做到這一點?

回答

0

要做到這一點,您需要將sp換成udf。這通常是可能沒有影響任何已有的代碼(即調用SP)通過簡單地轉發(現有的)SP的(新)UDF,即

CREATE PROC foo @blah int 
AS 
BEGIN 
    SELECT * FROM dbo.foo_udf(@blah) 
END 

LINQ到SQL支持可組合對UDF的,但不是SP,因此您應該能夠在您的查詢中加入UDF(通過yourContext.UdfName(...))。

+0

如何從我的IQueryable擴展方法訪問數據上下文以調用SP或UDF? – Alex 2010-07-08 22:42:58

+0

@Alex - 'IQuerable '?你不會的。我可能會將它作爲*擴展方法的輸入。但是對於現有的SP方法,你簡單**不能**加入它們(至少在db中,這是隱含的願望) – 2010-07-09 05:24:35