小编xtb*_*itz的帖子

NHibernate:存储过程和组件

我将一个存储过程称为NamedQuery,它工作正常.当我尝试加载组件时,问题就开始了.存储过程返回这样的记录集

[IDEmployee,EmployeeName,City,Country]

IDEmployee和EmployeeName属于映射实体,City和Country属于组件

这是映射:

<class name="Employee" table="employees"> 
    <id name="IDEmployee"> 
      <column name="idemployee" /> 
      <generator class="native" /> 
    </id> 
    <property name="EmployeeName "> 
      <column name="employeename" /> 
    </property> 
    <component name="Address" class="Address"> 
      <property name="City"> 
        <column name="city" /> 
      </property> 
      <property name="Country"> 
        <column name="country" /> 
      </property> 
    </component> 
  </class> 
Run Code Online (Sandbox Code Playgroud)

这是我用来调用存储过程的代码:

  <sql-query name="GetEmployeesByCompany"> 
    <return class="Employee"> 
      <return-property column="idemployee" name="IDEmployee" /> 
      <return-property column="employeename" name="EmployeeName" /> 
      <return-property column="city" name="City" /> 
      <return-property column="country" name="Country" /> 
    </return> 
    EXEC GetEmployeeByCompany:idcompany 
  </sql-query> 
Run Code Online (Sandbox Code Playgroud)

这里我用来调用存储的代码:

 var result = 
    session<ISession>().GetNamedQuery("GetEmployeesByCompany") 
                .SetInt32("idcompany", companyId) 
                .List<Employee>().ToList(); 
Run Code Online (Sandbox Code Playgroud)

这是我运行应用程序时遇到的错误

System.IndexOutOfRangeException: t1_282_0_ 
   at System.Data.SqlClient.SqlDataReader.GetOrdinal(String name) 
   at …
Run Code Online (Sandbox Code Playgroud)

nhibernate stored-procedures nhibernate-mapping

3
推荐指数
1
解决办法
1263
查看次数