2011-04-13 59 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(); 
相关问题