Как использовать представления базы данных в EF Core 3.0? - PullRequest
0 голосов
/ 28 сентября 2019

Я знаю, что вопрос задавался раньше, но в то время у нас был EF Core 2.x.Короткий ответ был «нет, ты не можешь» и, очевидно, не очень полезен.

Другие ответы касались отвратительных хаков, таких как изменение файлов миграции после того, как они были созданы инструментом.

Я делаюКод приложения Первый.Мои модели созданы с учетом множества внешних ключей и соединений базы данных.

Но вот неприятный сюрприз (я немного новичок в EF): эти объединения, написанные в LINQ, довольно медленные, так какна самом деле они не производят соединение с базой данных, а вместо этого извлекают целые таблицы.

Конечно, это совершенно неприемлемо, я импортирую старую базу данных с миллионами записей, с объединениями, которые я получаю в миллисекундах, безпара секунд отстает - на моем очень быстром интернет-соединении (в сценарии реального мира это было бы намного хуже).

Мне нужны представления, и AFAIK EF не создаст их для меня, действительно ли это верно для EF3.0?

Тогда, каков будет лучший и самый чистый способ создания представлений в SQL и создания сущностей для них?Я имею в виду - учитывая ситуацию, модели баз данных со временем меняются, и структура базы данных должна быть обновлена.

Что ж, я бы предпочел выполнять свои объединения не в представлениях SQL, просто запросы возвращали "JOIN"Результаты заявления.Особенно некоторые неочевидные объединения.Допустим, таблица B имеет столбец, являющийся ссылкой на внешний ключ, ссылающийся на таблицу A. Я хочу получить результаты из таблицы A, соединяющей B для деталей.При нормальной производительности SQL JOIN.

Я проверил базу данных: нет существенной разницы в производительности между «select * from A» и «select * from A join B ...».В LINQ - разница огромна.

...