Scaffold-DbContext для представлений базы данных в EF Core 2.1 (типы запросов)

В EF Core 2.1 появилась новая функция - Типы запросов.

Вот некоторые из основных сценариев использования типов запросов:

  • Служит типом возвращаемого значения для специальных запросов FromSql ().
  • Сопоставление с представлениями базы данных.
  • Сопоставление с таблицами, для которых не определен первичный ключ.
  • Сопоставление с запросами, определенными в модели.

Я обновляю проект до Core 2.1, но Scaffold-DbContext по-прежнему не генерирует представления базы данных. Мне нужно использовать специальный параметр, или Scaffold-DbContext его не поддерживает?


person Pavel Jedlicka    schedule 17.07.2018    source источник


Ответы (2)


Не поддерживается в 2.1. См. Проблему # 1679.

person bricelam    schedule 18.07.2018
comment
Он должен поддерживаться в версии 2.2. Вот дорожная карта для EF Core 2.2: github.com/aspnet/Announcements/issues/308 - person Pavel Jedlicka; 18.07.2018
comment
он отложен до версии 3.0, см .: github.com/aspnet/Announcements/issues/ - person volkit; 05.09.2019

Вот хакерское, но рабочее решение:

Как построить контроллеры с представлениями базы данных в EF Core 2.1

  1. Создать представление в базе данных.
  2. Создайте POCO с той же структурой, что и представление.
  3. Добавьте новый Контроллер с POCO, созданным на шаге 2 a. Если возникает ошибка, связанная с ключом, добавьте атрибут Key в столбец, а затем удалите его после завершения формирования шаблонов.
  4. Должно быть добавлено новое свойство с DbSet<T>, где T - это класс, созданный на шаге №2. Измените DbSet на DbQuery.
  5. В OnModelCreating метод DbContext добавьте следующий код:

    modelBuilder.Query<POCO from step#2>().ToView("Name of the view");
    

Источник

person Satish Yadav    schedule 09.11.2018
comment
Спасибо за руководство, я новичок в этом, обязательно в следующий раз. - person Satish Yadav; 09.11.2018
comment
Обновлено с содержанием. - person Satish Yadav; 09.11.2018