生成数据的ID属性-NHibernate

生成数据的ID属性-NHibernate,nhibernate,Nhibernate,我有一些用于创建报告的存储过程(每个SP将数据分组为天/周/月/年)。通过一个示例,我创建了一个简单的实体“Report”,它与SP中的字段相匹配,但抛出一个错误,指出需要一个ID(或复合ID) 如何为生成的数据集定义ID,而不映射到实际表 我拥有的映射文件是: <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <cla

我有一些用于创建报告的存储过程(每个SP将数据分组为天/周/月/年)。通过一个示例,我创建了一个简单的实体“Report”,它与SP中的字段相匹配,但抛出一个错误,指出需要一个ID(或复合ID)

如何为生成的数据集定义ID,而不映射到实际表

我拥有的映射文件是:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="Report, Business" mutable="false" check="none">
        <property name="Year" type="int" />
        <property name="Week" type="int" />
        <property name="Date" type="DateTime" />
        <property name="Count" type="int" />
    </class>
    <sql-query name="spReport">
        <return class="Report, Business" lock-mode="read">
            <return-property column="Year" name="Year" />
            <return-property column="Week" name="Week" />
            <return-property column="Date" name="Date" />
            <return-property column="Count" name="Count" />
        </return>
        exec spReport :StartDate, :EndDate
    </sql-query>    
</hibernate-mapping>

exec存储报告:开始日期,:结束日期
非常感谢您的帮助

谢谢。


<class name="Report, Business" mutable="false" check="none">
  <composite-id>
    <key-property name="Year" type="int" />
    <key-property name="Week" type="int" />
    <key-property name="Date" type="DateTime" />
    <key-property name="Count" type="int" />
  </composite-id>
</class>
您必须在
报告
中覆盖
Equals
GetHashCode


就我个人而言,我不喜欢这种方法。最好不要映射类,在查询中使用
SetTransformer(Transformers.AliasToBean())

谢谢。我接受了你的建议,选择了SetTransformer(Transformers.AliasToBean())选项。