我将一个存储过程称为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)