Ну, мой опыт версии 1 был интересным. Я хотел использовать POCO, но он не поддерживал это. После прочтения я наткнулся на некоторый код из тела в Microsoft, который сделал это.
Было немного грязно генерировать код, но в целом эта часть процесса была не так уж и плоха.
Реальная неприятная вещь, с которой я столкнулся, это отсутствие встроенной проверки параллелизма для разработки N-уровня. Вы должны сами справиться с этим, что после рассмотрения проблемы было не так уж и плохо, особенно если вы хотите вернуть клиенту управление версиями для вмешательства пользователя.
Второй неприятной и абсолютно глупой вещью, которой не хватало, было ключевое слово IN для запросов LINQ. Не поддерживается и поэтому необходимо обойти. Я нашел решение, но это была настоящая неразбериха с другим кодом, который быстро исправлял упущения.
Буду ли я использовать EF 4.0 (2.0). Да, конечно, почему бы и нет? На самом деле на этапе 2 я буду использовать это. Похоже, что он поддерживает POCO, похоже, что моя модель параллелизма будет двигаться без проблем (в основном, с дельта-копированием). Пока все хорошо, и я надеюсь, что на этот раз «большие парни» из Microsoft увидели ошибки в своих действиях и предложили решение, которое работает.
Если ваша покупка в первую очередь для разработки сущностей и всей Концептуальной Модели, то это единственный способ получить полное решение Microsoft. Хотя то, что делается на языке М, может затмить идею и перенести весь процесс моделирования обратно в базу данных.
Если вы не купитесь на Entity, то я бы настоятельно рекомендовал Enterprise Library. Это проверенная технология, которая работает каждый раз на основе надежного кода и парадигмы, ориентированной на базы данных. Я бы тоже пошел по этому пути, если вы думаете, что хранимые процедуры - это колени пчел, и вам нравится то, что они приносят на стол.
Если вы чувствуете себя действительно экзотично и чувствуете себя немного резвым, я бы выбрал подход NO-SQL, такой как CouchDB. Это, однако, требует некоторого привыкания. Это чертовски странно и кажется действительно очень неправильным. Но все развивается очень быстро, и решения кажутся надежными и быстрыми, чем ожидалось. Я не получил бы для этого типа решения, хотя, если вы большой в нормализации и думаете, что это может быть применено к подходу NO-SQL. Вся модель должна быть перевернута с ног на голову, а приложение необходимо будет смоделировать таким образом, чтобы это зависело от применяемой технологии.
Я считаю, что CouchDB немного грязный и очень-очень неправильный. Но у него так много веских причин использовать его, что, я думаю, он проникнет в психику каждого программиста и определенно станет массовым в следующие пару лет.
Мое самое большое недовольство в целом сущностью Entity, хотя даже в новой версии 4 то, что в N-уровневых средах действительно мало кто задумывался. Он по-прежнему чувствовал, что это двухуровневое решение с большим количеством кода, которое еще предстоит сделать конечному пользователю (разработчику), чтобы оно работало надежным и надежным способом N-уровня.