我正在学习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表的结果,没有对记录集的引用。
由于此类是自动生成的,是否可以包含子表中的记录?如果是,我错过了哪一块拼图?
提前感谢您的帮助。
答案 0 :(得分:1)
以下文章提供了有关如何实现此目标的信息。
答案 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