2012-05-13 5 views
1

У меня есть исследование об этом, и все решения указывают на одно решение, чтобы использовать приведенный ниже код и поместить его в файл .hbm.xml. но у меня его нет. У меня есть hibernate.cfg.xml и nhvalidator.cfg.xml.Как вызвать хранимую процедуру с помощью nhibernate?

Я читал отсюда: http://forums.asp.net/t/1407518.aspx/1 , но где я могу ввести теги запроса? Я набрал его в файле hibernate.cfg.xml (см. Ниже), но он не работает.

<?xml version="1.0" encoding="utf-16"?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
     <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
     <property name="connection.connection_string">Server=localhost\MSSQLSERVERR2;Database=SupplierSearch;Trusted_Connection=True</property> 
     <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property> 
     <property name="cache.use_minimal_puts">false</property> 
     <property name="use_outer_join">false</property> 
    </session-factory> 
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
    namespace="Quarry.SupplierSearch" 
    assembly="SupplierSearch"> 
    <class name="SupplierSearch" table="Client" lazy="true"> 
     <id name="ClientId" column="ClientId"> 
     <generator class="native" /> 
     </id> 

     <property name="FirstName" column="FirstName" /> 
     <property name="ClientId" column="ClientId" /> 

     <loader query-ref="GetAllClient"/> 
    </class> 
    <sql-query name="GetAllClient" > 
     <return alias="GetAllClient" class="SupplierSearch"> 
     <return-property name="ClientId" column="ClientId"/> 
     <return-property name="FirstName" column="FirstName"/> 
     </return> 
     exec GetAllClient 
    </sql-query> 
    </hibernate-mapping> 
</hibernate-configuration> 

, поскольку он не работает, я попытался ввести его в моем Client.nhv.xml (см ниже), где отображается клиент)

<?xml version="1.0" encoding="utf-8"?> 
<nhv-mapping assembly="Quarry.SupplierSearch" namespace="Quarry.SupplierSearch.Model" xmlns="urn:nhibernate-validator-1.0"> 
    <class name="Client"> 
     <property name="Address1"> 
      <not-null /> 
     </property> 
     <property name="Address2"> 
      <not-null /> 
     </property> 
     <property name="BusinessName"> 
      <not-null /> 
     </property> 
     <property name="ClientId"> 
      <not-null /> 
      <digits integerDigits="10" /> 
     </property> 
     <property name="Country"> 
      <not-null /> 
     </property> 
     <property name="FirstName"> 
      <not-null /> 
     </property> 
     <property name="LastName"> 
      <not-null /> 
     </property> 
     <property name="ListingType"> 
      <not-null /> 
      <digits integerDigits="10" /> 
     </property> 
     <property name="PhoneNumber"> 
      <not-null /> 
     </property> 
     <property name="PostCode"> 
      <not-null /> 
     </property> 
     <property name="State"> 
      <not-null /> 
     </property> 
    </class> 
    <loader query-ref="GetAllClient"/> 
    <sql-query name="GetAllClient"> 
    <load-collection alias="Clients" role ="Client"/> 
    exec [GetAllClient] 
    </sql-query> 
</nhv-mapping> 

любое предложение, чтобы получить эту работу? спасибо

ответ

1

Его нужно называть Client.hbm.xml не Client.hbv.xml и встроенным ресурсом.

Редактировать Я не знаком с любыми инструментами, которые генерируют hbv, и я никогда не видел сопоставление, которое начинается с <nhv-mapping .. >. Должен быть специальный плагин/dll, который вы должны использовать, чтобы заставить это работать. Какой инструмент вы используете?

Как вы видели это blog post, чтобы заставить SP работать без каких-либо специальных инструментов.

+0

сделал я упоминаю, что мое решение делает не имеет Client.hbm.xml только client.hbv.xml и hibernate.cfg.xml? Слой модели был сгенерирован с использованием инструмента и не создал такой файл. Я попытался добавить новый файл client.hbm.xml в качестве встроенного ресурса, но он возвращает ошибку, он не может видеть запрос. – user742102

+0

Пожалуйста, см. Мое редактирование, вот что вызывает проблему. Я не видел, чтобы ваше сопоставление начиналось с ' Rippo

+0

Да, я видел много подобных сообщений в приведенной ссылке u. Было бы легко, если бы у меня был файл client.hmb.xml. К сожалению, ни один из них и клиент не использовали инструмент для создания слоя модели, и он этого хочет. Он использовал приобретенный инструмент Visual NHibernate. Есть ли другой путь ? Спасибо за помощь. – user742102

1

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

<sql-query name="GetAllClient"> 
    <load-collection alias="Clients" role ="Client"/> 
    SELECT {c.*} 
    FROM client c 
</sql-query> 

(с материалом в ваших ХП внутренностей вместо «SELECT ... FROM ...» части конечно.)

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