Entity Framework: игнорировать столбцы

entity-framework

Вопрос

У меня есть база данных, из которой я хочу построить модель EF, однако я не хочу включать определенные столбцы из базы данных, поскольку соответствующие столбцы поддерживаются исключительно на сервере и не должны обрабатываться никаким приложением.

Оба столбца имеют DateTime (если это имеет какое-либо значение), один из столбцов имеет значение NULL и поддерживается триггером на обновления, а другой не имеет значения NULL и устанавливается с использованием значения по умолчанию в определении таблицы.

Я думаю, что я ищу что-то вроде «Server Generated» вариант в Linq2Sql; но я не могу найти такой вариант.

Кто-нибудь может сказать мне, как обойти это?

Предостережение:

Я пытался внедрить моделирование бизнес-объектов на своем рабочем месте в течение нескольких лет, и оно всегда отклонялось из-за количества дополнительного кода, который нужно провернуть вручную. EF в настоящее время рассматривается как жизнеспособное решение из-за дизайнера и генерации кода, поэтому любой вариант, который включает ручную настройку XML, только отвлечет остальных моих коллег от EF. Поэтому я ищу что-то, что можно сделать с помощью дизайнера или с помощью кода.

РЕДАКТИРОВАТЬ:

Я думаю, что то, что я ищу здесь, тоже ...

(а) способ создания модели без EF, ссылающейся на столбцы в хранилище (ssdl) и, следовательно, не пытаясь каким-либо образом манипулировать ею (б) способ программной установки атрибута «StoreGeneratedPattern» для свойства при создании ObjectContext (простой ответ состоит в том, чтобы вручную манипулировать этим в .ssdl, но тогда это будет перезаписано, если я обновлю модель из базы данных и не смогу пойти по пути, где .csdl, .msl & .ssdl выполняются вручную ).

Популярные ответы

Вы можете сделать это с Entity Framework? Да; это просто. Можете ли вы сделать это с дизайнером Entity Framework? К сожалению, это намного сложнее.

Проблема в том, что столбец существует в схеме хранения (SSDL) в вашем EDMX. Удаление столбца с помощью дизайнера графического интерфейса просто удаляет его из схемы клиента, а не из схемы отображения или схемы хранения. Однако достаточно просто зайти в EDMX и удалить его. Сделав это, вы также можете удалить его из сопоставления в частях схемы клиента EDMX, и инфраструктура сущности будет дольше жаловаться, что она не сопоставлена.

Проблема решена, верно?

Ну нет. Когда вы используете дизайнер графического интерфейса для обновления EDMX из базы данных, схема хранилища выбрасывается и создается заново. Так что ваша колонна вернется. Насколько я знаю, нет способа сказать дизайнеру GUI никогда не отображать конкретный столбец. Так что вам придется делать это каждый раз, когда вы обновляете с дизайнером GUI. К счастью, EDMX - это XML, так что вы можете сделать это с помощью преобразования XML, LINQ или инструмента XML по вашему выбору.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow