在 C#vs2008 上工作。我有一个存储过程,这个程序包含临时表,我需要获取临时表值。我的查询是如下:
create procedure [dbo].[TestProcedure]
as
SELECT * INTO #temp1 from(select * from DischargePort) as b
select * from #temp1
drop table #temp1
我上面的查询有一个名为#temp1的临时表。在sql-server-management中运行此查询后得到结果,但是当我尝试在linq中执行此过程时,我得不到结果。我的linq语法如下:
var r = ProviderName.TestProcedure();
任何人都可以告诉我为什么会出现这个问题,如何克服这个问题。希望任何一个身体都不要说linq无法处理临时表或这类词。如果有任何查询请问。请提前谢谢。
答案 0 :(得分:1)
我不认为这与临时表有任何关系,而是Linq不知道预期的输出是什么。
使用Dotnet Framework 4,这很简单,因为您可以执行类似
的操作 (from r in ProviderName.TestProcedure().AsDynamic()
select new { r.Id, r.Description}).ToList()
(假设Id和描述是DischargePort中的字段)
否则,您需要在设计师中做一些事情,告诉Linq您的程序输出了什么。我从来没有这样做,但也许this article会有所帮助。
当我考虑它时,在这种特殊情况下,你应该能够做类似
的事情var results = (from r in ExecuteQuery<DischargePort>("exec TestProcedure")
select r ).ToList();
答案 1 :(得分:0)
我首先下载linqpad来查看linq发出的sql,这可能会提供一些线索。您还可以使用sql profiler工具查看正在运行的查询。