NHibernate map class 属性查询

NHibernate map class properties to query

我正在尝试映射 class 以使用 NHibernate

调用存储过程

我有一个 class:

public class OrderDetails
{
    public virtual int OrderNumber { get; set; }
    public virtual DateTime OrderDate { get; set; }
    public virtual int ProductCode { get; set; }
    public virtual string ProductName { get; set; }
    public virtual int Quantity { get; set; }
    public virtual decimal Price { get; set; }
}

和此 class 的映射:

  <class name="OrderDetails" >
    <id name="OrderNumber" column="ID"/>
    <property name="OrderNumber" column="ID"/>
    <property name="OrderDate" column="OrderDate"/>
    <property name="ProductCode" column="productCode"/>
    <property name="ProductName" column="Name"/>
    <property name="Quantity" column="Quantity"/>
    <property name="Price" column="UnitPrice"/>
    <loader query-ref="GetOrdersByDate" />
  </class>
  <sql-query name="GetOrdersByDate" callable="true">
    exec [dbo].[sp_OrdersByDate] :DateFrom, :DateTo
  </sql-query>

当我调用此查询时出现异常

Could not find a setter for property 'ID' in class 'OrderDetails'

如何将这些列映射到 class 属性?

免责声明:准备删除此...如果仍然没有帮助...

这是我的SP(MSSQL)

CREATE PROCEDURE [dbo].[sp_OrdersByDate]
    @DateFrom DateTime,
    @DateTo DateTime
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 1 as ID
    , '2011-01-01' AS OrderDate
    , 123          AS productCode
    , 'XYZ'        AS Name
    , 1            AS Quantity
    , 100          AS UnitPrice
END
GO

这是映射(已测试)

<class name="OrderDetails" >
    <id name="OrderNumber"       column="ID" />
    <property name="OrderDate"   column="OrderDate"/>
    <property name="ProductCode" column="productCode"/>
    <property name="ProductName" column="Name"/>
    <property name="Quantity"    column="Quantity"/>
    <property name="Price"       column="UnitPrice"/>
    <loader query-ref="GetOrdersByDate" />
</class>

<sql-query name="GetOrdersByDate" callable="true">
    <return class="OrderDetails"></return>
    exec [dbo].[sp_OrdersByDate] :DateFrom, :DateTo
</sql-query>

这是查询 (有效)

var query = session.GetNamedQuery("GetOrdersByDate");

query.SetParameter("DateFrom", new DateTime(2013, 10, 26));
query.SetParameter("DateTo", new DateTime(2020, 12, 26));

var list = query.List<OrderDetails>();