C#和ASP.NET MVC:如何在另一个模型中填充数据对象模型

问题描述

我有一个模型,可以处理要在ASP.NET MVC表单上显示的问题。我的Question模型中的属性之一是项目的问题类型(QuestionType);这是它自己的单独的模型类,但是我的问题是我无法从数据库中读取QuestionType值,然后在我的QuestionType模型类中更新Question属性

例如,我希望能够执行以下操作,但是我不知道如何正确填充QuestionType

string myQuestionTypeName = model.Question.QuestionType.Name;

Question模型类:

public class Question
{
    public int QuestionId { get; set; }
    public string Name { get; set; }
    public QuestionType QuestionType { get; set; }    
}

QuestionType模型类:

public class QuestionType
{
    public int QuestionTypeId { get; set; }
    public string Name { get; set; }
}

Question数据-从我的Question数据库表中提取

我的存储过程返回:

  • QuestionId
  • 名称
  • QuestionTypeId

代码

public List<Question> PullList()
{
    List<Question> questionList = new List<question>();

    using (sql sql = new sql(sql.Connection.MyDbConnectionName,"storedProc_PullQuestions"))
    {
        using (var ds = sql.GetDataSet())
        {
            foreach (DaTarow dr in ds.Tables[0].Rows)
            {
                Question question = new Question();
                question.QuestionId = dr.Field<int>("QuestionId");
                question.Name = dr.Field<string>("Name");
                question.QuestionType = //??? Not sure what to do here.  I have the "QuestionTypeId" from the stored procedure,but not sure how to populate this object based on that id.

                questionList.Add(question);
            }
        }
    }

    return questionList;
}

QuestionType数据-从我的QuestionType表中提取;我的存储过程返回:

代码

public List<QuestionType> PullList()
{
    List<QuestionType> questionTypeList = new List<QuestionType>();

    using (sql sql = new sql(sql.Connection.MyDbConnectionName,"storedProc_PullQuestionTypes"))
    {
        using (var ds = sql.GetDataSet())
        {
            foreach (DaTarow dr in ds.Tables[0].Rows)
            {
                QuestionType questionType = new QuestionType();
                questionType.QuestionTypeId = dr.Field<int>("QuestionTypeId");
                questionType.Name = dr.Field<string>("Name");

                questionTypeList.Add(questionType);
            }
        }
    }

    return questionTypeList;
}

感谢您可以提供的帮助

解决方法

在存储过程的选择查询中,您必须将2个表连接起来

foreach (DataRow dr in ds.Tables[0].Rows)
{
     Question question = new Question();
     question.QuestionType = new QuestionType();
     question.QuestionId = dr.Field<int>("QuestionId");
     question.Name = dr.Field<string>("Name");
      question.QuestionType.QuestionTypeId = dr.Field<int>"QuestionTypeId");
     question.QuestionType.Name = dr.Field<string>("QuestionTypeName");

     questionList.Add(question);
}