Entity Framework: Как можно добавить в SQL Server View? - PullRequest
0 голосов
/ 31 августа 2011

Может быть, я что-то здесь упускаю, но я так не думаю.

У меня есть сущностная модель, и она также поддерживает представления SQL Server. Когда я работал со своей сущностью, я заметил что-то вроде следующего метода:

HubEntities _entities = new HubEntities();
_entities.vw_AccommPropertiesFullWeb.AddObject(...

vw_AccommPropertiesFullWeb вот вид.

Как можно добавить новый вид в вид? Парни из EF сделали это нарочно или это что-то неправильно настроенное?

1 Ответ

2 голосов
/ 31 августа 2011

Если вы импортируете SQL View в модель, он всегда представляется как DefiningQuery, который по определению только для чтения.Единственный способ сделать его доступным для записи - это реализовать хранимые процедуры и сопоставить их с Insert, Update и Delete операциями типа сущности.

Обходной путь - это отображение представления так, как EF будет веритьчто это стол.Для этого требуется:

  • Ручное изменение файла EDMX, и если вы не купите какой-либо дополнительный инструмент, вы также никогда не сможете снова использовать обновление из базы данных = вы собираетесь поддерживать EDMX вручную
  • Ваше представление должно быть обновляемым - оно должно следовать некоторым правилам, определенным сервером базы данных - обычно при использовании с EF это означает, что ваше представление должно иметь триггеры INSTEAD OF для операций модификации или оно не может использовать объединения, объединение, вычисляемые столбцы, агрегации или что-либоиначе, если столбцы, полученные в результате этих операций, не помечены как вычисленные в EF (представления базы данных позволяют вставлять и обновлять столбцы только из базовой таблицы).
...