Asp.net mvc 3 在mvc模型中添加子项而不需要遍历列表?

Asp.net mvc 3 在mvc模型中添加子项而不需要遍历列表?,asp.net-mvc-3,list,stored-procedures,entity-framework-4,Asp.net Mvc 3,List,Stored Procedures,Entity Framework 4,使用mvc 3和EF 4.1(带有存储过程)。 我有一个问题列表,我需要为每个问题添加一个评论列表。不确定这是否可以在一个过程和一个模型中完成,而不必循环通过每个问题模型并添加注释。以下是我目前掌握的情况: (简而言之,我们需要更好的方法) 我的程序“SP_GetQuestionIssues”: 我的“问题问题”模型: 3年后,我偶然发现了这个问题,但不管它值多少钱: 您可以查看一个返回多个记录集的存储过程(批处理t-sql),并使用SqlDataReader.NextResult以类似于伪代码

使用mvc 3和EF 4.1(带有存储过程)。 我有一个问题列表,我需要为每个问题添加一个评论列表。不确定这是否可以在一个过程和一个模型中完成,而不必循环通过每个问题模型并添加注释。以下是我目前掌握的情况: (简而言之,我们需要更好的方法)

我的程序“SP_GetQuestionIssues”:

我的“问题问题”模型:

3年后,我偶然发现了这个问题,但不管它值多少钱:


您可以查看一个返回多个记录集的存储过程(批处理t-sql),并使用
SqlDataReader.NextResult
以类似于伪代码的方式处理它们。

您的整个存储过程可以使用EF完成。你需要使用它有什么特别的原因吗?你能给我一个例子吗…我可以用一个proc把它包装成一个模型吗?
CREATE PROC [dbo].[SP_GetQuestionIssues]
(@ReviewID int)
AS
Select r.ReviewID, q.QuestionId, s.Title Step, q.QuestionText Question, r.AnswerValue Answer, IsIssue 
From dbo.Questions q
 Join dbo.Steps s
            on q.StepId = s.StepId
 Join dbo.QuestionFlagged qf
            on q.questionId = qf.questionId 
 Join dbo.Responses r
            on q.questionId = r.QuestionID
 Where IsIssue=1 
 AND r.ReviewID = @ReviewID
 AND qf.ReviewID = @ReviewID
 Order by s.StepID, s.stepOrder, q.DisplayOrder
public class QuestionIssue
    {
        public int ReviewID { get; set; }
        public int QuestionId { get; set; }
        public string Step { get; set; }
        public string Question { get; set; }
        public string Answer { get; set; }
        public bool IsIssue { get; set; }
        public virtual IEnumerable<Comment> Comments { get; set; }
    }
public class Comment
    {      
            public int CommentId { get; set; }
            public int ReviewId { get; set; }
            public Nullable<int> QuestionId { get; set; }
            public string Reviewer { get; set; } 
            public string CommentText { get; set; } 
            public bool IsMemo { get; set; } 
    }
SqlParameter param = new SqlParameter("@ReviewID", Id);
                var issues = db.Database.SqlQuery<QuestionIssue>("SP_GetQuestionIssues @ReviewID", param).ToList();
 foreach(var issue in issues)
 {
     var comments = somefunction.getcomments(issue.reviewId, issue.questionId)
     issue.Comments.add(comment)
  }