NHibernate: Как вызвать хранимую процедуру и Single / Plural для моделей? - PullRequest
1 голос
/ 11 ноября 2010

Может кто-нибудь сказать мне лучший и рекомендуемый способ вызова хранимой процедуры с использованием NHibernate?

У меня настроены сопоставления, и в настоящее время у меня это работает

 var list = session.CreateSQLQuery("exec usp_Test").AddEntity(typeof(Product)).List<Product>();

И, конечноя получаю СПИСОК моих продуктов, но это лучший способ сделать это?

Также есть классы Model т.е.Продукт лучше всего установить как Singular или Plural (Продукты).

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Я предлагаю по возможности избегать хранимых процедур с помощью NHibernate.

Могут существовать причины использовать хранимые процедуры.Это так, есть несколько способов использовать их с NHibernate.

Вызывать их напрямую как запрос (как вы делаете), указывать их как предопределенный запрос или вы даже можете определить их как способ выбора NHibernate,вставить или обновить объект.

В Ayende опубликовано сообщение *1008* о том, как использовать хранимые процедуры в файлах сопоставления.

В Codeproject * 1012 имеется сообщение * как их вызывать из кода.

О вашем коде:

  • AddEntity добавляет не тип, а экземпляр сущности.Фактически он обращается к своему первичному ключу.
  • Хранимая процедура не может предоставить список продуктов.Только NHibernate, ORM, может читать объекты из базы данных.Когда вы вызываете хранимую процедуру, вы напрямую переходите в базу данных.

Я не понимаю последнее предложение о единственном и множественном числе.Это другой вопрос?

0 голосов
/ 11 ноября 2010

Не совсем. Обычно, если вы используете nHibernate, вы позволяете ему генерировать запросы для вас. Не то чтобы что-то не так с тем, что вы делаете, но вы обманываете себя из-за полезности nHibernate, делая это таким образом. Если бы я был тобой, я бы изучал сбор объектов, используя вместо этого объекты критериев.

...