使用NHibernate将本机sql映射到实体

本文关键字:映射 实体 sql 本机 NHibernate 使用 | 更新日期: 2023-09-27 18:20:13

是否可以使用NHibernate将原始sql映射到实体?

如下所示:

C#实体:

public virtual IList<Result> MyResult { get; set; }

Hbm.xml:

<bag name="MyResult">
    <my-custom-sql type="Result">
        SELECT * FROM ResultTable where MyComplexCondition = true
    </my-custom-sql>
</bag>

Result有自己的hbm.xml。有可能实现我想要实现的目标吗?

使用NHibernate将本机sql映射到实体

有一个功能,称为<subselect>。点击此处查看更多

如何将NHibernate实体映射到查询

这可以应用于<class><bag>。这可能是如何在具有Languages集合的MyEntity的袋子上使用它的方式;

<bag name="Languages" lazy="true" batch-size="25" 
     mutable="false" >
  <subselect>
    SELECT MyEntity_ID, Language_ID, IsNative FROM Languages
  </subselect>
  <key column="MyEntity_ID" />
  <composite-element class="Language">
    <parent name="MyEntity"/>
    <many-to-one not-null="true" name="Language" class="Language" column="Language_ID" />
    <property not-null="true" name="IsNative" column="IsNative"/>
  </composite-element>
</bag>

当然,这应该用于只读(不可变)解决方案