Приложение, которое я сейчас создаю, использует хранимые процедуры и созданные вручную модели классов для представления объектов базы данных. Некоторые люди предлагают использовать Entity Framework, и я подумываю перейти на это, так как я не так далеко от проекта. Моя проблема в том, что я чувствую, что люди, выступающие за EF, говорят мне только о хорошем, а не о плохом :)
Мои основные проблемы:
- Мы хотим, чтобы проверка на стороне клиента осуществлялась с использованием DataAnnotations, и, похоже, мне все равно нужно создавать модели на стороне клиента, поэтому я не уверен, что EF сэкономит столько времени на кодирование.
- Мы хотели бы, чтобы классы были как можно меньше при работе по сети, и я прочитал, что использование EF часто включает дополнительные данные, которые не нужны
- У нас есть сложный слой базы данных, который пересекает несколько баз данных, и я не уверен, что EF справится с этим. У нас есть одна общая база данных с такими вещами, как Users, StatusCodes, Types и т. Д., А также несколько экземпляров наших основных баз данных для разных экземпляров приложения. Запросы SELECT могут и будут запрашивать все экземпляры баз данных, однако пользователи могут изменять только те объекты, которые находятся в базе данных, над которой они работают в настоящее время. Они могут переключать базы данных без перезагрузки приложения.
- Объектные режимы очень сложны, и часто требуется довольно много объединений
Аргументы в пользу EF:
- Параллелизм. Мне не нужно кодировать в чеках, чтобы увидеть, обновлялась ли запись перед каждым сохранением
- Генерация кода. EF может генерировать частичные модели классов и POCO для меня, однако я не уверен, что это действительно сэкономило бы мне столько времени, так как я думаю, что нам все еще нужно будет создать клиентские модели для проверки и некоторые пользовательские методы анализа.
- Скорость разработки, поскольку нам не нужно создавать хранимые процедуры CRUD для каждого объекта базы данных.
Наша текущая архитектура состоит из службы WPF, которая обрабатывает вызовы базы данных с помощью параметризованных хранимых процедур, объектов POCO, которые отправляются в / из службы WCF и клиента WPF, и самого клиента рабочего стола WPF, который преобразует POCO в класс Models с целью проверки и DataBinding.
Итак, мой вопрос, подходит ли EF для этого? Есть ли подводные камни в EF, о которых я не знаю?