如何检查MVC中select语句的结果?

时间:2013-09-25 10:07:48

标签: asp.net-mvc stored-procedures

嗨,这是我的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。但是在输入点后它没有显示结果。我怎样才能实现这个目标?

3 个答案:

答案 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连接。