0

嗨,这是我拥有的 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();

        }

但是当我在using语句中放置断点并检查结果时,它没有显示任何结果。我在这里挣扎了很长时间,我没有得到适当的解决方案。那么 MVC 中检查具有 select 语句的 SP 的结果的步骤是什么?

更新: 使用 tolist 后我得到了解决方案。现在我在列表中得到三个结果,我需要获取一个结果,即 URL 并将其作为输入参数传递。我的代码:int ID = 413; var x = ctx.uspdHub(ID).ToList();

这里 x 有 3 个结果。我需要从中得到一个结果。我尝试做 x。但在我输入点后它不显示结果。我怎样才能做到这一点?

4

3 回答 3

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

    }

如果您需要更多信息,请阅读本文。从实体框架调用存储过程(上面的代码无论如何都可以工作......)

于 2013-09-25T10:13:14.993 回答
0

利用...

using (var ctx = new database_Entities())
        {
            int ID = 122;
            var result = ctx.uspHub(ID);
         }

并在之后添加一个中断result以查看result变量中的内容。显然,结果的 sope 需要移动,但我在这里只展示如何查看返回的数据。

于 2013-09-25T10:15:00.937 回答
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 连接。

于 2013-09-25T10:21:06.440 回答