Мы только что столкнулись с этой проблемой с ужасным дизайном схемы (случайным образом имеют первичные ключи, никаких внешних ключей вообще, плохо спроектированные таблицы - просто беспорядок).
У нас была роскошь выбора технологии, и мы выбрали внешний интерфейс MVC2 (не имеет отношения к вашему вопросу), и у нас было 2 разработчика: одна попытка смоделировать с помощью NHibernate, другая с использованием Entity Framework 4.
Спешу добавить, что у нас было четкое представление о том, что мы хотели от нашей модели предметной области, и сначала смоделировали это (не желая быть ограниченным базой данных), поэтому наш объект «Пользователь» с точки зрения схемы фактически охватывая 5 таблиц, мы инкапсулировали большую часть бизнес-логики, чтобы модель предметной области не была анемичной, и как только мы были довольны нашим объектом User, мы начали процесс попытки подключить ORM.
Я могу без колебаний сказать, что в обоих случаях (NH и EF4) компромиссы, которые нам пришлось сделать с нашей моделью, чтобы продемонстрировать реализацию, были феноменальными. Я приведу вам примеры из EF4, так как это тот, в котором я больше всего участвовал, другие могут связать их с другими ORM.
частные сеттеры
Нет - не в твоей жизни с EF4. Ваши свойства должны быть публичными. Существуют обходные пути (например, создание оболочек для свойств, поступающих из вашей БД)
перечисления
Опять же, нет - была концепция обертки и «отображение», чтобы попытаться получить доступ к базе данных int из типов enum моделей.
результаты
Мы выстоял на некоторое время с обоими подходами, чтобы добраться до точки, где мы завершили отображение пользователя, а результат в том, что мы должны были поставить под угрозу нашу модель предметной области слишком много способов.
куда мы пошли после этого?
Linq to SQL с нашим собственным отображающим слоем. И мы никогда не оглядывались назад - абсолютно фантастически - мы сами написали слой отображения, который переносит объект Dto на слой Dal и отображает его (как мы его указываем) в нашу модель Домена.
Удачи в любом исследовании ORM, я бы, конечно, повторно исследовал бы их, если бы у меня была приличная схема, на которой они основывались, но сейчас, с ужасной схемой, было проще свернуть нашу собственную.
Ура,
Махровый