1

我对此进行了研究,所有解决方案都指向一种解决方案,使用下面的代码库并将其放入 .hbm.xml 文件中。但我没有。我所拥有的是hibernate.cfg.xml 和nhvalidator.cfg.xml。

我从这里读到: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>

有什么建议可以让它工作吗?谢谢

4

2 回答 2

1

它需要被称为Client.hbm.xmlnotClient.hbv.xml和嵌入式资源。

编辑我不熟悉任何生成 hbv 的工具,也从未见过以<nhv-mapping .. >. 必须有一个自定义插件/dll,您必须使用它才能使其正常工作。你用的是什么工具?

但是,您是否看过这篇博文以让 SP 在没有任何自定义工具的情况下工作。

于 2012-05-13T17:31:48.420 回答
1

负载收集不支持使用存储过程(仅限标量)。使用格式:

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

(当然,用你存储的过程内部的东西代替“SELECT ... FROM ...”部分。)

于 2012-05-25T03:33:43.207 回答