EF Code First и Database Views

Я только начал рассматривать представления базы данных с помощью кода First... и попытаюсь решить, следует ли мне их использовать.

Здесь Ladislav рекомендует использовать NotMapped родительский наследование для таблицы и Db-View (мое представление добавляет только суммы дочерних объектов)... но как это работает с CF Миграции? Я действительно хочу их использовать.

Кроме того, свойства навигации будут работать с Db-View Entity?

Есть ли способ сохранить данные непосредственно в сущности Db-View (и ее таблице)?

Ответ 1

Если вы хотите сначала использовать код и миграцию, вы не должны использовать представления. Представления представляют собой "логические" конструкции базы данных, а код сначала не является подходом для создания логики базы данных. С первым кодом вы должны использовать проекцию, которая также упоминается в связанном ответе.

Миграции не смогут обнаружить изменения, связанные с вашими представлениями. Вам нужно будет написать весь код миграции для просмотров вручную.

Если вы хотите использовать представления, вы должны сначала сделать базу данных (= без миграции), либо сопоставить их с EDMX или кодовым отображением.

Кроме того, свойства навигации будут работать с Db-View Entity?

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

Есть ли способ сохранить данные непосредственно в сущности Db-View (и ее таблице)?

Да, но ваше представление должно быть обновляемым. Я не думаю, что представление со значениями агрегации обновляется.