2011-04-13 25 views
1

工作在C#vs2008。我有一個存儲過程,此過程持有臨時表,我需要得到臨時表values.My SQL查詢波紋管:爲什麼linq無法獲取臨時表值

create procedure [dbo].[TestProcedure] 
as 

SELECT * INTO #temp1 from(select * from DischargePort) as b 

select * from #temp1 

drop table #temp1 

我上面的查詢有一個名爲#temp1.After臨時表運行此查詢SQL服務器的管理,我得到的結果,但是當我嘗試執行在LINQ此過程中,我沒有得到任何result.My LINQ語法是波紋管:

var r = ProviderName.TestProcedure(); 

任何人能告訴我,爲什麼這個問題出現,如何克服這個問題。希望任何機構不要說linq無法處理臨時表或這種詞。如果有任何查詢請求。提前感謝。

+0

如果刪除drop語句,並刷新設計師TestProvider元你得到的結果? – 2011-04-13 04:59:26

+0

你期望r是什麼類型,你在做什麼? – sgmoore 2011-04-13 08:54:35

+0

asp316-從程序中刪除下拉表#temp1後,我沒有得到結果。 – shamim 2011-04-17 05:35:35

回答

0

我會先下載linqpad來查看linq發出的sql,這可能會提供一些線索。你也可以使用sql profiler工具來查看正在運行的查詢。

1

我不認爲這與臨時表有什麼關係,而是Linq不知道輸出是否與預期相符。

隨着DOTNET Framework 4中,這是很容易,因爲你可以做這樣的事情

(from r in ProviderName.TestProcedure().AsDynamic() 
     select new { r.Id, r.Description}).ToList() 

(假設標識和描述字段排放口)

否則,你需要做的事情在你的設計師告訴Linq你的程序輸出了什麼。我從來沒有這樣做,但也許this article將有所幫助。

當我仔細想想,在這種特殊情況下,你應該能夠做到像

var results = (from r in ExecuteQuery<DischargePort>("exec TestProcedure") 
select r).ToList(); 
相關問題