没有Id的NHibernate映射

Jos*_*ose 9 nhibernate

是否可以在不使用Id的情况下在NHibernate中进行映射?

我要做的是,使用调用存储过程

session.CreateSqlQuery( myQuery ).AddEntity( typeof( MyEntity ) );
Run Code Online (Sandbox Code Playgroud)

该过程是一个聚合,并且没有返回Id字段,但我仍然希望利用NHibernate映射返回到实体的数据.到目前为止,我唯一想到的是让程序添加一个字段"O as Id"或者其他东西,让实体有一个假的Id字段.

And*_*age 5

即使没有ID字段,您的实体也必须以某种方式“唯一”。

确定将哪些属性放在一起时必须是唯一的,并在它们上使用复合键...

<composite-id>
  <key-property name="Property1" column="Column1"/>
  <key-property name="Property2" column="Column2"/>
</composite-id>
Run Code Online (Sandbox Code Playgroud)


Jos*_*ose 3

我发现这确实不可能。从存储过程返回的数据也必须有一个 Id。它只是创建一个带有 Id 的虚拟列,以及对象上的虚拟属性,但我只是决定手动将 NHibernate 返回的数据转换为对象。

基本上,您不应该在 NHibernate 中使用存储过程。毕竟它是一个 ORM。就我而言,我别无选择,只能使用该程序。