Наша команда использовала NetTiers и нашла это полезным. НО ... чем больше мы его использовали, тем больше у нас возникали головные боли и болевые точки. Например, каждый раз, когда вы вносите изменения в базу данных, вам необходимо заново сгенерировать DAL с помощью CodeSmith, который включает:
- воссоздание тысяч строк кода в 3 отдельных проектах
- воссоздание сотен хранимых процедур
Может быть, есть другие способы сделать это, но это то, что мы должны были сделать. Регенерация исходного кода была в порядке, страшно, но хорошо. Настоящая проблема возникла с хранимыми процедурами. Он не очищал неиспользуемые хранимые процедуры, поэтому, если вы удалили таблицу из своей схемы и заново сгенерировали DAL, хранимые процедуры для этой таблицы не были удалены. Кроме того, это стало настоящей головной болью для сценариев изменения базы данных, где нам пришлось сравнивать старую структуру базы данных с новой и создавать сценарий изменения для обновления установок клиента. Этот скрипт может работать с десятками тысяч строк SQL-кода, и если при его выполнении возникла проблема, которая неизменно возникала, решить ее было довольно сложно.
Затем загорелся свет, NHibernate как ORM. У него, конечно, есть время нарастить, но оно того стоит. Существует масса поддержки для этого, поэтому, если вам нужно что-то сделать, скорее всего, это было сделано раньше. Он чрезвычайно гибкий и позволяет вам контролировать каждый его аспект, а затем и некоторые. Это также становится все легче и проще в использовании. Fluent Nhibernate - это отличный способ избавиться от необходимых файлов сопоставления xml, а NHibernate Profiler предоставляет отличный интерфейс для наблюдения за тем, что происходит за кулисами, для повышения эффективности и устранения избыточности.
Переход с NetTiers на NHibernate был болезненным, но хорошим способом. Это заставило нас перейти к лучшей архитектуре и пересмотреть функциональные потребности. NetTiers предоставили тонны кода доступа к данным, получили эту сущность по ее идентификатору, получили эту другую сущность по внешнему ключу, получили tlist и vlist того и того, но большинство из них было ненужным и неиспользованным. NHibernate с общим хранилищем и пользовательскими хранилищами только там, где это необходимо, сокращает тонны неиспользуемого кода и действительно повышает удобочитаемость и надежность.