使用存储过程时,在mvc4模型中返回多个记录集

时间:2013-05-17 18:33:00

标签: asp.net-mvc-4

我正在学习MVC4。

我的问题是这个。当从存储过程中查询数据时,MVC模型是否可以提供多个记录集?

所以让我添加一些上下文。在我的数据库中,我有2个表和一个存储过程,定义如下:

CREATE TABLE [dbo].[RnDParent](
[ParentID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
CONSTRAINT [PK_RnDParent] PRIMARY KEY CLUSTERED 
(
[ParentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[RnDChild](
[ChildID] [int] IDENTITY(1,1) NOT NULL,
[ParentID] [int] NOT NULL,
[Label] [varchar](50) NOT NULL,
[Value] [money] NOT NULL,
CONSTRAINT [PK_RnDChild] PRIMARY KEY CLUSTERED 
(
[ChildID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

CREATE PROCEDURE Proc_RnDProcedure_GetParentByID 
@ParentID int
AS
BEGIN

SELECT [ParentID]
,[Name]
FROM [PriceCal3].[dbo].[RnDParent]
WHERE [ParentID] = @ParentID

SELECT [ChildID]
,[ParentID]
,[Label]
,[Value]
FROM [PriceCal3].[dbo].[RnDChild]
WHERE [ParentID] = @ParentID

END
GO

然后我创建了一个MVC4项目,并使用ADO.Net实体数据模型控件创建模型,选择存储过程Proc_RnDProcedure_GetParentByID作为我想要使用的对象。

连接字符串的multipleactiveresultsets键设置为True;

当我查看存储过程的模型代码时,定义如下。

namespace RnDMVC4Project.Models
{
using System;

public partial class Proc_RnDProcedure_GetParentByID_Result
{
public int ParentID { get; set; }
public string Name { get; set; }
}
}

对于Child表的结果,没有对记录集的引用。

由于此类是自动生成的,是否可以包含子表中的记录?如果是,我错过了哪一块拼图?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

以下文章提供了有关如何实现此目标的信息。

http://msdn.microsoft.com/en-US/data/jj691402

答案 1 :(得分:1)

因为只有一个对象,你可以这样做吗?

SELECT c.[ChildID]
,c.[ParentID]
,c.[Label]
,c.[Value]
,p.[Name]
FROM [PriceCal3].[dbo].[RnDChild] as c
INNER JOIN [PriceCal3].[dbo].[RnDParent] ON c.[ParentID] = p.[ParentID]
WHERE c.[ParentID] = @ParentID