2012-02-29 3 views
0

У меня проблема с проблемой, которая обматывает мою голову вокруг задачи или даже больше, поэтому лучший способ сделать это.Сопоставление объектов для nHIbernate Fluenty

Возьмите образец проекта:

  • UI
  • DATA (Assembly)
  • SERVICE (Сборки), построенный на DATA

ли я помещал все отображения в сборке DATA или должны Я разделяю их на сборки SERVICE? Или я должен вообще избавиться от сборки DATA?

Этот вопрос вытекает из имеющих статический вспомогательного класса NHibernate в любом узле DATA или сборку UTILITY который затем ссылается из службы узлов и т.д.

Ссылки проекта Направление

UI> ДАННЫЕ/ПОЛЕЗНЫЕ

DATA/UTILITY < УСЛУГИ

UI> УСЛУГИ

Я просто делаю это сложнее или делаю это неправильно/правильно?

Примечание:

Я упомянул Fluent, как в то время как я знаю, что вы можете использовать config.xml для ссылки на сборки на карту, я не совсем уверен, как сделать это с Fluent без фактической ссылки сборки проекта - который заставляет меня попадающих в круглую опорную петлю.

ответ

0

Если вы заинтересованы в том, чтобы отделить код сопоставления от определений ваших объектов (ваших данных), вам нужна дополнительная сборка, сборка уровня доступа к данным, которая ссылается на вашу сборку данных и содержит проблемы с доступом к данным (например, ваши NHibernate-сопоставления). Таким образом, ваша сборка DATA просто содержит ваши POCOs и знает знания о сохранении. Ваша сборка доступа к данным ссылается на вашу сборку данных и имеет знания о сохранении. Я бы сохранил ваши вспомогательные методы NHibernate из вашей сборки «UTILITY» и вместо этого разместил их в этой новой сборке «доступа к данным».

Чтобы все было сказано, если вы не хотите отделять свои данные от механизма персистентности, вы можете просто сбросить все (сопоставления и вспомогательные функции) в сборке DATA.

+0

Я не 100% на вашем объяснении, я не могу представить, что происходит. Возможно, я не объяснил себя должным образом. Я не хочу беспокоиться о разлуке, но я считаю, что должен быть на самом деле. Предполагается, что УСЛУГИ с их логикой используют сборку DATA/DATA ACCESS для взаимодействия с базой данных. Поэтому, если я понимаю вас, я должен поместить все сопоставления и nHibernate в сборку DATA ACCESS. В УСЛУГАх не должно быть сопоставлений. Правильно ли это? – Anthony

+0

Я думал упомянуть: хотя мой текущий проект не будет иметь плагинов, которые могут быть в будущем. В этом случае главный был бы одним и тем же; использовать узел DATA ACCESS для взаимодействия с базой данных? Если да, то каким образом будут управляться сопоставления, тогда рассмотрение POCOs не будет присутствовать в сборке DATA ACCESS для новых таблиц, если оно добавлено? Извините, что запутываю ситуацию, я хочу начать правильно и идти вперед, вместо того, чтобы найти линию, которую я должен переписать. – Anthony

+0

Я только что понял, если я разоблачу ISession через сборку DATA ACCESS, это будет неважно, где я пишу POCOs.Пока ISession/текущий сеанс может быть достигнут, он по существу открывает базу данных. Хотя, полагаю, возможно, это может быть так, как это должно быть сделано? – Anthony

Смежные вопросы