嗨,这是我的SP:
USE [Tracker_Entities]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[uspHub]
@id int
AS
BEGIN
SELECT DISTINCT table1.UID, table1.url, Scope.ID
FROM table1 INNER JOIN
Scope ON table1.UID = Scope.newBrand
WHERE (table1.value = 0) AND (Scope.ID = @id)
ORDER BY table1.url
END
GO
当我通过传递ID作为参数在sql server中运行此SP时,我得到了预期的结果。现在我需要在mvc中检查这个SP。这就是我在MVC中调用此SP的方式:
using (var ctx = new database_Entities())
{
int ID = 122;
ctx.uspHub(ID);
ctx.SaveChanges();
}
但是当我在使用语句中放置断点并检查结果时,它没有显示任何结果。我在这里挣扎了很长时间,我没有得到适当的解决方案。那么MVC检查具有select语句的SP的结果的步骤是什么?
更新 使用tolist后我得到了解决方案。现在我在列表中得到三个结果,我需要获取一个URL结果并将其作为输入参数传递。 我的代码: int ID = 413; var x = ctx.uspdHub(ID)。ToList();
这里x有3个结果。我需要从中得到一个结果。我试着做x。但是在输入点后它没有显示结果。我怎样才能实现这个目标?
答案 0 :(得分:1)
您必须Get
将结果合并到正确的model
/ object
。
List<YourEntity> model;
using (var ctx = new database_Entities())
{
int ID = 122;
model = ctx.uspHub(ID).toList();
//ctx.SaveChanges(); - no need to call SaveChanges
// - as you are not updating anything
}
如果您需要更多信息,请阅读本文。 Call Stored Procedure From Entity Framework (上面的代码无论如何都会有用......)
答案 1 :(得分:0)
使用...
using (var ctx = new database_Entities())
{
int ID = 122;
var result = ctx.uspHub(ID);
}
并在result
后添加中断,以查看result
变量中的内容。显然,需要移动结果,但我只是在这里显示如何查看返回的数据。
答案 2 :(得分:0)
尝试使用以下内容:
using (var dataContext= new database_Entities())
{
int ID = 122;
SomeEntity[] result = dataContext.Database.SqlQuery<SomeEntity>("[dbo].[uspHub] @id",new SqlParameter("@id", ID)).ToArray();
}
这对我有好处。我使用ORM EntityFramework与DB连接。