【发布时间】:2016-11-11 16:09:05
【问题描述】:
我有以下模型(简化):
数据库模型:
public abstract class Question
{
public int Id { get; set; }
public string Text { get; set; }
}
public class QuestionA : Question
{
public bool OptionA { get; set; }
}
public class QuestionB : Question
{
public int OptionB { get; set; }
}
查看模型:
public abstract class QuestionModel
{
public string Text { get; set; }
protected QuestionModel(Question question)
{
Text = question.Text;
}
}
public class QuestionAModel : QuestionModel
{
public bool OptionA { get; set; }
public QuestionAModel(QuestionA questionA) : base(questionA)
{
OptionA = questionA.OptionA;
}
}
public class QuestionBModel : QuestionModel
{
public int OptionB { get; set; }
public QuestionBModel(QuestionB questionB) : base(questionB)
{
OptionB = questionB.OptionB;
}
}
基本上是将数据库实体映射到视图模型,例如,这个控制器:
public class SomeController : Controller
{
public JsonResult Get()
{
// Simulating questions from the database
var questions = new List<Question>
{
new QuestionA { Id = 1, OptionA = true, Text = "fooA" },
new QuestionB { Id = 1, OptionB = 1, Text = "fooB" }
};
var model = questions.Select(q => new QuestionModel(q)).ToList();
return Json(model);
}
}
这显然不能编译,因为new QuestionModel(q)
我知道数据库中每个问题的类型,如何创建每个问题实体的派生问题模型?
谢谢大家!!
【问题讨论】: