Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/nhibernate/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
另一个NHibernate地图之谜!获取hbm文件中的计数_Nhibernate_Nhibernate Mapping_Hbm - Fatal编程技术网

另一个NHibernate地图之谜!获取hbm文件中的计数

另一个NHibernate地图之谜!获取hbm文件中的计数,nhibernate,nhibernate-mapping,hbm,Nhibernate,Nhibernate Mapping,Hbm,我正在尝试检索分配给hbm文件中容器的项目计数。我已经做了一些挖掘工作,并设法获得了我的hbm代码(见下文!)。我希望每次查询容器对象时都检索计数。我可以用拦截器,但我想有更好的方法。我是在正确的轨道上,还是应该使用不同的策略来增加计数 谢谢 另外,我们使用的是NHV2.2 <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default

我正在尝试检索分配给hbm文件中容器的项目计数。我已经做了一些挖掘工作,并设法获得了我的hbm代码(见下文!)。我希望每次查询容器对象时都检索计数。我可以用拦截器,但我想有更好的方法。我是在正确的轨道上,还是应该使用不同的策略来增加计数

谢谢

另外,我们使用的是NHV2.2

   <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false" assembly="MyEntities" namespace="Entities.Containers">   <class name="Container" table="[Container]" xmlns="urn:nhibernate-mapping-2.2">
    <id name="Id" column="Id" type="Int32" unsaved-value="0">
      <generator class="native" />
    </id>
    <property name="Capacity" column="Capacity">
      <column name="Capacity" />
    </property>
    <property name="Description" column="Description" length="50" type="String">
      <column name="Description" />
    </property>
    <loader query-ref="sqCurrentContainerAllocation"/>   </class>

  <sql-query name="sqCurrentContainerAllocation">
    <return-scalar column="AllocatedItemsCount" type="int"></return-scalar>
      SELECT COUNT(*) FROM [ContainerTracking]
      WHERE [ContainerId] = :Id   </sql-query> 
   </hibernate-mapping>

从[ContainerTracking]中选择计数(*)
其中[ContainerId]=:Id

如果需要获得一些计算属性,可以使用
公式的映射。
让我们扩展您的C#类:

并扩展映射

<class name="Container" table="[Container]"
  ...
  <property name="MyCount" insert="false" update="false" >
      <formula>
      (
         SELECT count(*) 
         FROM [ContainerTracking] as ct
         WHERE ct.[ContainerId] = Id
      )
      </formula>
  </property> 

我将进行一些分析,看看NH执行了什么。敬请期待。
<class name="Container" table="[Container]"
  ...
  <property name="MyCount" insert="false" update="false" >
      <formula>
      (
         SELECT count(*) 
         FROM [ContainerTracking] as ct
         WHERE ct.[ContainerId] = Id
      )
      </formula>
  </property>