实体框架代码首先使用链接表

时间:2014-09-02 12:15:23

标签: c# entity-framework

目前我有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进行映射?我能看到简化这种方法的唯一方法是将其分解为多个数据库调用。 (获取属于一组的所有问题,然后针对每个问题,获得所有答案)。尽管可维护性更高,但由于存在多个数据库查询,因此速度更慢。

0 个答案:

没有答案