目前我有3个表(和代表性对象)。
这些是2个对象和一个链接表。这对我有用,但是我从数据库中获取的数据是一种笨重的结构/格式。
我的域名对象应该是;
[Question]
int id
string QuestionText
ICollection<Answers> Answers
[Answer]
int id
string AnswerText
int NextQuestion
我的加入是在下面。基本上我正在加入我的问题链接表,它创建了一个对象[问题,链接]。然后我加入Answers到这个,所以我得到一个有效的对象; [答案,[[问题],[链接]]
除了执行起来相对较慢之外,这段代码还需要我的大量操作才能将数据转换为我的内部结构。
var dbModels = await Task.Run(() => _context.QuestionsInSet
.Join(_context.LinkQuestionsAnswers,
q=>q.Id, qa=>qa.AnswerId,
(q,qa) => new {Question=q, LinkQuestionsAnswers = qa})
.Join(_context.Answers, qa=>qa.LinkQuestionsAnswers.AnswerId, a=>a.Id,
(qa, a) => new {Link=qa, Answer=a})
.Where(z=>z.Link.LinkQuestionsAnswers.SetId== id)
);
有没有办法使用注释简化这个,或者在上下文中使用ModelBuilder进行映射?我能看到简化这种方法的唯一方法是将其分解为多个数据库调用。 (获取属于一组的所有问题,然后针对每个问题,获得所有答案)。尽管可维护性更高,但由于存在多个数据库查询,因此速度更慢。