大家好我已经在sql
写了我的查询,这给了我一个结果,这是我的查询
SELECT Technology,TechDescription, Technology.TechID, COUNT(Question) AS
'Totalposts' FROM Technology LEFT JOIN Question ON Question.TechID = Technology.TechID GROUP BY Technology.TechID, Technology,TechDescription
我只需将其写入存储过程,如下所示
USE [newForumDB]
GO
/****** Object: StoredProcedure [dbo].[selectTechQuestions] Script Date: 01/24/2013 15:06:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [dbo].[selectTechQuestions]
As
SET FMTONLY OFF
Begin
SELECT Technology,TechDescription, Technology.TechID, COUNT(Question) AS
'Totalposts'
FROM Technology
LEFT JOIN Questions
ON Questions.TechID = Technologies.TechID
GROUP BY Technologies.TechID, Technology,TechDescription
End
并将其添加到我的模型中,并尝试为该过程添加一个函数,但我收到的消息为The selected stored procedure returns no columns
可以帮助我
按照Habib
的要求,我试过两种方式,即
1) writing the query in a string and filled the DataSet using SqlCommand and SqlDataAdapter which works fine
2) SqlCommand cmd = new SqlCommand();
cmd.CommandText = "selectTechQuestions";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
第二个给我错误{"Invalid object name 'Questions'."}
答案 0 :(得分:1)
把你的作为
SELECT Technology AS 'Technology',TechDescription AS 'TechDescription', Technology.TechID AS 'ID', COUNT(Question) AS
'Totalposts'
FROM Technology
LEFT JOIN Questions
ON Questions.TechID = Technologies.TechID
GROUP BY Technologies.TechID, Technology,TechDescription
所以,很多时候我得到这种类型的概率,当时我已经做到了这一点。
这是愚蠢的解决方案,但我已经提出了我的问题,可能会对你有所帮助....
详细说明
正如我们所知道的那样选择语句返回结果作为单个数据集,即使它来自多个表,即查询如内连接。
当数据出现时,多个表中有可能会有来自不同表的两个不同的列具有相同的名称。
这个子句在简单的数据获取方式中没有任何问题,即我们只是使用 DataAdapter 和 SqlCommand ,但实体框架无法处理这个问题,因此,编译器不允许查询包含内部连接或多个表查询。
所以要解决这个问题,我们只需要像在这里一样在每列之前指定一个不同的名称,这样就不会有任何问题导致......