2012-05-13 9 views
1

私はそれに関する研究をしており、すべての解決策は以下のコードのlibeを使用してint .hbm.xmlファイルを入れるという1つの解決策を指摘しています。私は持っていません。私が持っているのは、hibernate.cfg.xmlとnhvalidator.cfg.xmlです。nhibernateを使ってストアドprocを呼び出す方法は?

私はここから読んでいます: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

はい、私はリンクで提供された多くの類似の投稿を見ました。私は単にファイルclient.hmb.xmlを持っていれば簡単でした。残念なことに、モデル層を生成するためにツールを使用していたクライアントは誰もいなくて、彼はそれを望んでいました。彼はVisual NHibernate購入ツールを使用しました。他の方法はありますか?助けてくれてありがとう。 – user742102

1

ストアドプロシージャを使用することは、load-collection(スカラーのみ)ではサポートされていません。 の形式を使用します。

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

(「SELECT ... FROM ...」コースの一部の代わりに、あなたのストアドプロシージャの内臓中のものを含む)

関連する問題