Архитектура и бизнес-логика NHibernate - PullRequest
2 голосов
/ 17 июня 2010

Я только начал разработку проекта, используя NHibernate и Fluent NHibernate для отображения, и я в замешательстве. Поскольку в ближайшие месяцы проект станет более сложным, я хотел бы структурировать код на логические уровни, такие как уровень постоянства и уровень бизнес-логики.

У меня есть бизнес-объект Patient, который содержит логику и проверку.

  1. Следует ли сопоставлять класс пациента с классом сопоставления Fluent NHibernate?
  2. Или должен ли класс отображения отображаться в некоторый объект доступа к данным, например PatientDAO и класс Patient, каким-либо образом использовать PatientDAO?

Если 1, не совпадают ли уровень моей бизнес-логики и уровень персистентности? Если 2 с двумя уровнями является отдельными проектами, должен ли я проект BL содержать объект Patient, а некоторые IPatientDAO и PL должны иметь объект PatientDAO?

Или я все делаю неправильно? : -)

1 Ответ

3 голосов
/ 17 июня 2010

Вы должны отобразить свои сущности, используя Fluent NHibernate, поскольку именно здесь вы отображаете структуру базы данных в вашу / из структуры вашей базы данных.

Что касается DAO, то это вопрос личного вкуса.Обычно люди любят использовать DAO некоторого рода (хотя люди любят называть их хранилищами в наши дни).Эти классы будут использовать NHibernate ISession для чтения / записи данных в базу данных и из нее.Как правило, текущие средства работы с ними - определить общий интерфейс с Get<T>(int id), GetAll<T>(), 'Delete () type methods defined to handle CRUD ops, with T` - типом сущности.

Однако это также возможноиспользовать ISession непосредственно в коде презентации, поскольку он уже предоставляет абстракцию для чтения / записи данных.Если вы идете по этому пути, то вы открываете NHibernate для остальной части вашего приложения, но вы также удаляете один уровень абстракции.

Что касается того, какой слой есть, то NHibernate составляет 95% -100% от вашего уровня персистентности.,Вы можете добавить свои собственные абстракции поверх них, чтобы создать API, который сделает вас счастливым, но это полностью ваше дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...