Подтвердить что ты не робот

Обновляемые представления в Entity Framework 5/6

У меня есть несколько просмотров, которые можно обновить в соответствии с http://technet.microsoft.com/en-us/library/ms187956.aspx.

Все мои взгляды соответствуют спецификациям в описываемой статье. Я проверил в SQL Management Studio, что представления могут быть обновлены, вставлены и удалены.

Исследование, которое я провел, привело меня к двум вариантам, позволяющим обновлять представления в моей модели Entity Framework 5/6:

  • Удалите тег из каждого представления, однако любая работа в MyContext.edmx перезаписывается при обновлении контекста из базы данных. Это означает, что это решение не очень жизнеспособно для моего проект.

  • Добавление вставки, обновление и удаление хранимой процедуры для каждого просматривать и сопоставлять их в дизайнере. Мне не очень нравится идея создания этих многочисленных хранимых процедур.

Есть ли простой способ сказать EF5 OR EF6, что представления могут быть добавлены/обновлены/удалены из этого, не будут уничтожены при выполнении последующих команд "Обновить модель из базы данных" без записи хранимых процедур для каждого метода ввода ( вставить, обновить, удалить) в каждом представлении?

4b9b3361

Ответ 1

Я бы подумал, что ваш самый простой способ - изменить определение вашего EntitySet в StorageModel, чтобы сказать ему, что оно рассматривается как таблица, в отличие от представления базы данных.

Глядя на определение XML, где он говорит

<EntitySet Name="Products" store:Type="Views" ..

вы меняете это на

<EntitySet Name="Products" store:Type="Tables" ..

(Обратите внимание, что "Продукты" - это просто пример) Это должно быть в вашем .edmx файле.
См. Стр. 44, Лерман, "Программирование сущностной структуры", 2-е изд.

Надеюсь, что это поможет.

Ответ 2

Я думаю, вместо использования .edmx вы идете с классами poco и используете класс dbcontext и modelbuilder для отображения его очень легкого или его не обновляемого каждый раз, когда вы обновляете базу данных. его очень эффективный и масштабируемый

Надеюсь, это поможет.

Ответ 3

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