执行存储过程而不作为函数导入

时间:2011-09-10 17:24:26

标签: .net sql-server c#-4.0 entity-framework-4

更新:

我想执行存储的proc或sql命令,它重新运行两个值。

我试图用ExecuteStoreCommand

做一个简单的例子

首先我尝试发送纯粹的sql

var sqlReturn = repository.ExecuteStoreCommand("select count(*) as 'Count' FROM 
[mydb].[dbo].[mytable]"); //returns -1

但它总是返回-1

然后我创建了存储过程

CREATE PROCEDURE TestCount

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    select count(*) as 'Count' FROM [mydb].[dbo].[mytable]
END
GO

但是当我打电话给我时,我得到了相同的-1结果:

var spReturn = repository.ExecuteStoreCommand("exec dbo.TestCount"); //returns -1

那么有什么方法可以在Entity Framework中做到这一点而不将任何内容导入到模型中?

上面的代码只是举例,但是当我发现如何从sql获取值时,查询将会非常复杂,我需要返回count和另一个计算值。

1 个答案:

答案 0 :(得分:3)

您需要使用ExecuteStoreQuery方法来检索值。 ExecuteStoreCommand将返回受影响的行数。如果执行Select语句,则不会影响任何行。查看How to: Directly Execute Commands Against the Data Source以获取示例。