@mletov

Почему в EntityFramework Core возвращаются неправильные значения из представления в базе данных?

Добрый день.
Знатоки .NET, подскажите, пожалуйста:

Есть у меня в базе вьюха, возвращает она вот такой набор данных

CAT 1 CAT 2 CAT 3 CAT 4 CAT 6 CAT 7 CAT 8.....

Хочу ее использовать в ASP.NET через Code First. Как обычно, создаю контекст, модель, подключение, делаю выборку
List<v_FullTreeItem> m = db.v_FullTreeItems.OrderBy(x => x.Srt).ToList();

И получаю вот такой результат
CAT 1 CAT 1 CAT 1 Ответ 6-1-2 Ответ 6-2-1 CAT 2 CAT 2 CAT 2 CAT 5 CAT 5 CAT 5 CAT 5...

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

Сразу скажу: вьюха в базе слегка замысловатая, берет данные из процедуры, возвращающей табличное значение, в которой используются UNION, CTE и другая вьюха. С обычными таблицами все получается, а вот с этой вьюхой какая-то дребедень. Причем я уже проделывал такое в проекте на ASP.NET MVC, проблем не было, тут решил использовать ASP.NET Core.

Вопросы:
- Почему так происходит? Это глюк Entity Framework Core или я что-то не так делаю?
- Можно ли это обойти?
- Не стоит ли пока не поздно перекинуть проект обратно на ASP.NET MVC?

UPD
Пробовал пойти другим путем
List<v_FullTreeItem> m = db.v_FullTreeItems.FromSql("SELECT * FROM v_FullTreeItems").ToList();

Результат тот же самый
  • Вопрос задан
  • 205 просмотров
Решения вопроса 1
@mletov Автор вопроса
Решил проблему: Добавил во вьюху поле ROW_NUMBER() OVER(ORDER BY id) AS PKey, а в модели указал, что это первичный ключ. Все стало нормально. Без первичного ключа работать корректно не хотело.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
А что выводится если выполнить SELECT * FROM v_FullTreeItems например в management studio
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы