Как не получить эту ошибку после добавления вида к модели EF - PullRequest
0 голосов
/ 15 декабря 2011

Я хотел выбрать строки в представлении, используя Linq to Entities, поэтому я щелкнул правой кнопкой мыши дизайнер edmx и «сгенерировать модель из базы данных», затем выбрал представление в мастере. Появится вид. Я могу выбрать строки.

Однако, с этого момента «генерировать базу данных из модели» теперь приводит к этой (доброй, я думаю, но раздражающей) ошибке:

Msg 2714, Level 16, State 6, Line 3
There is already an object named 'vAdvertiserEmployees' in the database.
Msg 4909, Level 16, State 1, Line 3
Cannot alter 'dbo.vAdvertiserEmployees' because it is not a table.

Что я здесь не так делаю?

1 Ответ

1 голос
/ 15 декабря 2011

Обновление модели из базы данных и Создание базы данных из модели - это два эксклюзивных подхода.Встроенный конструктор VS EF не может переходить от одного к другому без особой боли - после того, как вы начнете использовать конструкции базы данных, такие как представления, путь к генерации модели из базы данных исчезнет.Представление в файле EDMX представляется как запрос SQL, выбираемый из представления (внутри элемента с именем DefiningQuery).Если вы запускаете Генерация базы данных из модели , то полное описание базы данных (часть SSDL) удаляется из файла EDMX и заменяется новым, который не допускает пользовательских запросов SQL (модель ничего не знает о таких конструкциях БД, какПросмотры).Это означает, что все ваши сопоставленные представления станут таблицами для EF, и на следующем шаге будут созданы сценарии для создания / изменения таблиц (изменяемые только с помощью дополнительных инструментов, таких как блок питания для создания баз данных).

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

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