【发布时间】:2011-02-11 04:09:22
【问题描述】:
我将 ASP.NET MVC 3 与 Entity Framework CodeFirst 一起使用
我有两个类如下:
问题:
public class Question
{
public int ID { get; set; }
public Target Target { get; set; }
public string QuestionText { get; set; }
public Category Category { get; set; }
public QuestionType QuestionType { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
public Unit Unit { get; set; }
}
答案:
public class Answer
{
public int ID { get; set; }
public virtual Question Question { get; set; }
public string AnswerText { get; set; }
public int Value { get; set; }
}
我也有这个 ViewModel:
public class QuestionViewModel
{
public int ID { get; set; }
public string Question { get; set; }
public string QuestionType { get; set; }
public string Target { get; set; }
public string Category { get; set; }
public string Unit { get; set; }
public List<Answer> Answers { get; set; }
}
我想查询问题表并包含答案(如果有的话)。
我一直在尝试这种风格
var question = (from q in hontgen.Questions
where q.ID == id
join qt in db.QuestionTypes on q.QuestionType equals qt
join t in db.Targets on q.Target equals t
join c in db.Categories on q.Category equals c
join u in db.Units on q.Unit equals u
join a in db.Answers on q.Answers equals a
select new QuestionViewModel() {
ID = q.ID,
Question = q.QuestionText,
QuestionType = qt.Type,
Category = c.CategoryName,
Unit = u.UnitName,
Target = t.TargetName,
Answers = a
}).Single();
但这当然不会滚动,因为 a 不是答案列表,而只是一个答案。
如何重写查询以获取集合中的所有答案,或“问题”中具有正确问题的所有答案,同时接受一个空的答案列表?
【问题讨论】:
标签: entity-framework-4 linq-to-entities code-first