Реальный сложный пример Nhibernate - PullRequest
0 голосов
/ 19 сентября 2009

В проекте, над которым я работаю, очень сложная логика бизнеса и данных. У меня в базе данных около 90 таблиц и 250 хранимых процедур.

Я видел очень простые примеры в Nhibernate, через которые выполняются операции с базой данных.

Я просто хочу знать, есть ли у нас огромная сложная логика, тогда как мы можем использовать nhibernate.

Также в настоящее время в некоторых сценариях я работаю с бизнес-логикой на уровне хранимой процедуры, поэтому, если есть небольшие изменения, просто внесение некоторых изменений в хранимую процедуру приводит меня в порядок. Но если я использую Nhibernate, как я могу работать с хранимыми процедурами и создавать сложные ситуации для меня.

Могу ли я получить пример кода на C #, который использует nhibernate и содержит сложные сценарии реального мира.

Ответы [ 2 ]

3 голосов
/ 19 сентября 2009

ORM, такой как основная цель NHibernate, состоит в том, чтобы абстрагировать доступ к базе данных из приложения и сделать его независимым от базы данных. Наличие бизнес-логики внутри хранимой процедуры означает, что использование ORM не принесет никакой пользы. Использование простого ADO.NET было бы более простым и полезным. ИМХО использование NHibernate для вызова простого SQL или хранимых процедур бесполезно. Вы просто добавляете в приложение дополнительный слой, который не принесет никакой пользы.

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

1 голос
/ 19 сентября 2009

Не только хранимые процедуры можно вызывать через NHibernate, но ORM позволяет вам вызывать эти процедуры таким образом, чтобы их результирующие наборы автоматически преобразовывались в конкретные типы сущностей.

См. http://softwaredevscott.spaces.live.com/blog/cns!1A9E939F7373F3B7!241.entry для примера. В частности, вам нужно использовать элемент <sql-query> файлов сопоставления NHibernate, чтобы задать имя, входные параметры и тип возвращаемого значения для вашей хранимой процедуры. Затем вы можете обратиться к этой хранимой процедуре в коде под именем, которое вы указали.

Я не верю, что вы можете вызывать хранимые процедуры незаметно. Им нужно дать имя где-то в файлах сопоставления NHibernate.

Что касается сложности, я полностью согласен с проблемами, с которыми вы сталкиваетесь. Я даю NHibernate тестовый прогон в своих собственных проектах, чтобы измерить его производительность и то, насколько он вас устраивает, когда вам нужна гибкость. До сих пор у меня не было никаких проблем.

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