webForumDet fria alternativet

nhibernate: count av childcollection

.NET

1 svar · 295 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Hur gör jag för att räkna hur många produkter en kategori har utan att köra ex.
categories[0].Products.Count?
Det känns ju onödigt att instansiera produktsamlingen bara för detta.

IList<Category> categories = session.CreateCriteria(typeof(Category)).List<Category>();
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
   <class name="Swh.Entities.Category, Swh.Entities" table="Categories">
      <id name="Id" column="CategoryId" type="int" unsaved-value="-1">
         <generator class="identity" />
      </id> 
      <property name="Name" column="CategoryName" type="String"/>
      <bag name="Products">
         <key column="CategoryId"/>
         <one-to-many class="Swh.Entities.Product, Swh.Entities"/>
      </bag>
   </class>
</hibernate-mapping>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
   <class name="Swh.Entities.Product, Swh.Entities" table="Products">
      <id name="Id" column="ProductId" type="int" unsaved-value="-1">
         <generator class="identity" />
      </id>
      <property name="Name" column="ProductName" type="String"/>
      <many-to-one name="Category" class="Swh.Entities.Category, Swh.Entities" column="CategoryId" />
   </class>
</hibernate-mapping>
Medlem sedan juni 20003 076 inlägg
#2

Fixat!
La till en property i min Categorimappning.

<property name="ProductCount" formula="(select count(*) from Products p where p.CategoryId = CategoryId )" access="property"/>
253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)