Существует ли Query-Mapper, как iBATIS.NET, но с грязным отслеживанием, отложенной загрузкой и каскадными обновлениями? - PullRequest
2 голосов
/ 02 февраля 2010

Проблема:

  1. База данных, управляемая администратором базы данных, с мандатом только для хранимых процедур.
  2. Ожидание, что домен будет определен в POCO.

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

В идеале ORM должен позволять мне декларативно (или свободно) отображать объекты домена в хранимые процедуры CRUD.

Некоторые выводы на данный момент:

  1. NHibernate будет работать, если только я смогу контролировать запросы, генерируемые для отложенной загрузки.
  2. iBATIS.NET будет работать отлично, но я не могу найти примеров:
    1. отслеживание состояния объекта (новый / обновленный / удаленный / и т. Д.)
    2. транзакции родительского / дочернего принятия (если родитель обновлен, обновите также все грязные дочерние объекты).
  3. Внутренний разработанный ORM, который работает с нашими соглашениями о базе данных, является опцией, и мы уже начали с этого. Но я хочу убедиться, что у нас нет другого выбора.

Non-опции:

  1. SubSonic выполняет перенос сохраненных процедур, но не отображает между процессами и объектами. Я мог бы реализовать какой-нибудь маппер, если бы он пришел к нему, но есть и другие факторы, которые также влияют на SubSonic, такие как отсутствие поддержки VS2005 (или SharpDevelop) и смешивание доступа к данным с объектами домена.
  2. Удаление SProcs не вариант. Целостность данных - ОГРОМНАЯ забота администраторов баз данных и высших должностных лиц, и они чувствуют себя в большей безопасности с SProcs. Это не мое место, чтобы убедить их в обратном.

Кто-нибудь знает о ORM, который соответствует моим потребностям, или о способе преодоления ограничений в ORM, который не соответствует моим потребностям, 100% ?

Любые предложения приветствуются!

1 Ответ

0 голосов
/ 26 августа 2011

Я думаю, что NHibernate - ваш лучший выбор.

Вы можете использовать элементы loader, sql-insert, sql-delete, sql-update для настройки процедур хранения для сущностей и отложенных загрузок, хотя это означает довольно много нажатий клавиш.

...