这很简单:
我有三张桌子:
的的问题:
ID(PK)
身体
QuestionsAndAnswers:
QuesionID
答案ID
数目:
ID
车身
是否正确
每个都有一个相应的类:
[Table]
public class Questions
{
[Column]public int ID;
[Column]public string Body;
}
[Table]
public class QuestionsAndAnswers
{
[Column]public int QuestionID;
[Column]public int AnswerID;
}
[Table]
public class Answers
{
[Column]public int AnswerID;
[Column]public string Body;
[Column]public bool IsCorrect;
}
我需要回答所有问题。
我知道如何解决所有问题:
private Table<Questions> questionsTable;
public SQLQuestionsRepository (string connString)
{
questionsTable=(new DataContext(connString)).GetTable<Questions>();
}
但是如何将特定的一个与它的答案联系起来呢? 我可以在一个命令中执行此操作,还是应该实际使用linq查询?如果是的话,怎么样?
谢谢。
答案 0 :(得分:3)
您可能想要进行连接(请注意,实际上您可以使用连接LINQ方法,但我不在此处使用它):
using (var dataContext = new DataContext(connString)) {
questionsTable=
from q in dataContext.GetTable<Questions>()
from a in dataContext.GetTable<Answers>()
from qa in dataContext.GetTable<QuestionsAndAnswers>()
where qa.QuestionID == q.QuestionID && qa.AnswerID == a.AnswerID
select new { Question = q, Answer = a};
}
另一种选择是添加关联(导航)属性,以便您可以直接从Questions对象获取所需信息:
[Association(Storage="QuestionsAndAnswers", OtherKey="QuestionID")]
public QuestionsAndAnswers QuestionsAndAnswers ...
然后您可以简单地获取问题并执行
myQuestion.QuestionsAndAnswers[0].Answer.IsCorrect