Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio–EntityFramework-所选存储过程不返回任何列_C#_Asp.net_Entity Framework 4 - Fatal编程技术网

C# Visual Studio–EntityFramework-所选存储过程不返回任何列

C# Visual Studio–EntityFramework-所选存储过程不返回任何列,c#,asp.net,entity-framework-4,C#,Asp.net,Entity Framework 4,大家好,我已经用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,TechDescri

大家好,我已经用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
并将其添加到我的模型中,并尝试为该过程添加一个函数,但我收到了消息,因为所选存储过程没有返回任何列。有人能帮我吗

根据哈比卜的要求,我尝试了两种方法,即

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);
第二个给了我错误{无效的对象名'Questions'。}

把你的

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
所以,很多时候以前当我遇到这种类型的问题时,当时我已经这样做了。 这是愚蠢的,解决方案,但我已经拿出了我的问题,可能是它可以帮助你充分

详细说明 正如我们所知,select语句以单个数据集的形式返回结果,即使它来自多个表,即类似于内部联接的查询

当数据来自中的多个表时,可能会从同名的不同表中溢出两个不同的列

这个子句在简单的数据获取风格中没有任何问题,也就是说,我们只是简单地使用DataAdapter和SqlCommand,但实体框架不能处理这个问题,所以编译器不允许包含内部联接或多个表查询的查询


因此,要解决这个问题,我们只需像我在这里所做的那样为每一列指定一个不同的名称,这样就不会有任何问题会导致…

设置FMTONLY OFF是不寻常的;我不希望看到它被使用。您可以删除它并查看EF是否对该过程更满意吗?请尝试在ManagementStudio中执行您的SP,并查看是否得到任何结果/error@HamletHakobyan这是一个很好的选择,但我不认为这会以这种方式干扰EF♦ 即使是同样的结果,首先我写了出来,只有在我的搜索中我发现了它并包括了它,但我没有得到它result@GopeshSharma但是,将发送模式。ORMs等的一个常见用法是打开FMTONLY,执行它,然后再次关闭它——尽管现在通常有更好的方法。但事实上,你不应该在真正的代码中看到太多设置,没问题,伙计。编码就像分享一样,你喜欢我的代码,我也喜欢你的代码。如果你喜欢我的代码,就不要给我买熊了Sagar Upadhyay如果你靠近我的位置,你会住在哪里,我肯定会买;对不起,老兄,我很糟糕,我只是一名学生,在中学学习了2年。我们可以在FB见面。我的身份证是USAGAR80@GMAIL.COM...