Задачи обслуживания в рамках Entity Framework - PullRequest
0 голосов
/ 16 августа 2010

После развертывания полного приложения с использованием Entity Framework (EF) и LINQ могут произойти следующие вещи с данными в «базе данных, которая ранее была включена / сопоставлена ​​с EF в приложении»:

  1. Создание новых таблиц и включение в EF
  2. Удаление существующих таблиц из базы данных, которые ранее были включены в EF
  3. Включение новых полей в таблицы и включение в EF также.
  4. Удалите поля из существующих таблиц, которые ранее были включены в EF
  5. Измените поле из базы данных (новый тип или длина) и примените изменения в EF.

Вопрос: можновсе эти изменения легко / автоматически модифицируются в приложении, которое использует EF?

1 Ответ

1 голос
/ 16 августа 2010

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

Более сложной задачей будет перестройка вашей бизнес-логики в соответствии с новой моделью данных. Те сущности / таблицы и свойства / атрибуты, которые были удалены / изменены, будут выделены в Visual Studio, и вам придется посетить каждую из этих строк кода, чтобы исправить их. Это может быть в вашем DAL / Repository и в любых сборках, которые ссылаются на вашу модель EF.

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

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

Есть ли у EF механизмы или "лучшие практики", которые позволяют нам согласовывать BL с новой моделью?

Я не уверен, что понимаю ваше намерение «привести BL в соответствие с новой моделью». Не существует автоматизированных способов «исправить код, чтобы приспособить сущности к новому облику». Вы просто увидите ошибки компилятора.

Если вы спрашиваете о том, как защитить от изменений БД, я бы сказал, что это архитектурное решение, которое вы принимаете в приложении, и в нем нет BP. Учитывая, что EF - это ORM, некоторые разработчики предлагают использовать / использовать сущности, которые EF создает для вас. Некоторые разработчики предлагают использовать их и создать partial class для расширения своего поведения (новые методы или свойства отделены от базы данных). Некоторые разработчики хотят создать совершенно новый набор классов и объектную модель, чтобы представить или сделать классы более похожими на реальный мир, а не на то, как база данных хочет структурировать модель данных. Затем они продолжают создавать код отображения между объектами EF и их собственными классами POCO - переводя между каждой версией.

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

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