Выбор конкретных объектов для моделирования в EF - PullRequest
0 голосов
/ 29 февраля 2012

Итак, когда я прямо сейчас использую мастер EF и выбираю представление, он создает сущности для каждого столбца в представлении. Как я могу выбрать создание сущности для определенных нескольких столбцов? Мне не нужны все из них. Также схема БД часто меняется. Что я могу сделать, чтобы убедиться, что это не сломает мое приложение?

1 Ответ

1 голос
/ 01 марта 2012

Вы задали два вопроса, поэтому это будет ответ из двух частей.

[Ответ 1] Невозможно выбрать конкретные столбцы при создании модели с помощью мастера.Однако, как только модель сгенерирована, удаление свойства удалит его (и его отображение) из модели.(Обратите внимание, что необнуляемые столбцы необходимо будет отображать как свойства, иначе вы получите ошибки).

[Ответ 2] С точки зрения частого изменения схемы, ваша лучшая ставка будет состоять в том, чтобы убедиться, что выпонять, что происходит под вашей моделью.EDMX содержит 3 раздела:

  1. «CSDL» - это «концептуальная модель», в которой хранятся определения вашей сущности.
  2. «SSDL» - это «хранилище»модель ", которая отслеживает состояние вашей базы данных.
  3. " MSDL "- это определяет отображение между ними.

Когда ваша схема БД изменяется и вы запускаете"Мастер обновления модели из базы данных, ваши CSDL и SSDL могут выйти из синхронизации.Это потому, что SSDL обновляется с изменениями, но CSDL не будет (если вы не добавляете что-то новое).Теперь, по большей части, это хорошая вещь, потому что она не сметет все сделанные вами изменения, поэтому ваша модель будет по-прежнему работать с логикой вашего приложения.Но вы можете увидеть ошибки из-за изменений в SSDL.

Есть несколько способов исправить это:

  • Если изменения в базе данных были относительно просты (добавленные столбцы,переименованные таблицы и т. д.) вы можете просто переопределить ваши сопоставления (используя окно «Сведения об отображении», доступное в контекстном меню объекта).Это требует ручной работы.Например, если в SSDL появляются новые столбцы, вам нужно добавить соответствующие свойства самостоятельно.Вам даже может понадобиться переназначить всю сущность, если ваши таблицы переименованы или слишком много отображений отброшено.
  • Вы можете удалить затронутые сущности из модели и повторно добавить их, используя мастер обновления.Это уничтожит любые сделанные вами настройки и может привести к поломке логики вашего приложения.Но если вам легче реагировать на изменения в базе данных, обновляя код приложения, чем перенимать сопоставления сущностей, это может быть другим вариантом.
  • Вы можете редактировать XML вручную.Конструктор не идеален для любой ситуации, поэтому, если худшее становится хуже, вы всегда можете использовать редактор XML.

Надеюсь, это поможет!Может не быть идеального решения, но оно должно помочь вам в этом.

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