C # EF Случайный порядок вызывает исчезновение связанного списка - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с моим API.Я хочу получить случайные вопросы обратно.

Модель моего вопроса имеет список ответов и подсказок:

public class Question
{
    public int Id { get; set; }
    public string Text { get; set; }
    public string Explanation { get; set; }
    public Category Category { get; set; }
    public ICollection<Answer> Answers { get; set; }
    public ICollection<Hint> Hints { get; set; }
}

обычно, если я вызываю метод get, я получаю json со всеми списками обратно

return _ctx.Questions.Include(x => x.Answers).Include(x => x.Hints).ToList();

 {
    "id": 1,
    "text": "Test?",
    "explanation": "Test",
    "category": null,
    "answers": [
        {
            "id": 1,
            "text": "Test",
            "isCorrect": true
        },
        {
            "id": 2,
            "text": "Test1",
            "isCorrect": false
        },
        {
            "id": 3,
            "text": "Test2",
            "isCorrect": false
        },
        {
            "id": 4,
            "text": "Test3",
            "isCorrect": false
        }
    ],
    "hints": [
        {
            "id": 1,
            "text": "..."
        },
        {
            "id": 2,
            "text": "..."
        }
    ]
}

Но если я хочу получать случайные пики с заказом, я получаю только пустые списки

return _ctx.Questions.Include(x => x.Answers).Include(x => x.Hints).OrderBy(o => Guid.NewGuid()).Take(amount).ToList();

{
        "id": 1,
        "text": "test",
        "explanation": "..-",
        "category": null,
        "answers": [],
        "hints": []
    }

У кого-нибудь есть идея, чтобы это исправить?

1 Ответ

0 голосов
/ 23 ноября 2018

После sql должен быть список.У меня похожая проблема давным-давно.Надеюсь, это поможет, было с более старой версией Ef.

Так что вы должны добавить ToList перед OrderBy.

return _ctx.Questions.Include (x => x.Answers).Include (x => x.Hints) .ToList (). OrderBy (o => Guid.NewGuid ()). Take (сумма) .ToList ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...