Kolekcja filtrów NHibernate
Używanie NHibernate Chcę filtrować kolekcję w klasie, aby zawierała TYLKO podzbiór możliwych obiektów. Poniżej zamieszczam przykładowe dane tabeli, które pomogą wyjaśnić. Nie mogę znaleźć sposobu, aby to zrobić za pomocą NHibernate.
Tabela: DataObjectDataObjectId (PK) / Name / CurrentVersion11 "data.txt" 2
12 "info.txt" 3
Tabela: DataObjectVersionId / Comment / NumberNumber / DataObjectId (FK)31 "Genesis" 1 11 <= Ignore this object
32 "Changed data" 2 11 <= Get this object
34 "Genesis" 1 12 <= Ignore this object
35 "Changed info" 2 12 <= Ignore this object
36 "Added info" 3 12 <= Get this object
Chcę dołączyć do klucza obcego DataObject.CurrentVersion = DataObjectVersion.VersionNumber dla każdego obiektu DataObject w jednym poleceniu.
Oto klasy i pliki map:
public class DataObject
{
public virtual int DataObjectId { get; set; }
public virtual string Name { get; set; }
public virtual int CurrentVersionNumber { get; set; }
public virtual IList<DataObjectVersion> Versions { get; set; }
}
<class name="DataObject" table="DataObject" lazy="false">
<id name="DataObjectId" column="DataObjectId" type="int">
<generator class="assigned" />
</id>
<property name="Name" column="Name" type="String(512)" />
<property name="CurrentVersionNumber" column="CurrentVersionNumber" type="int" />
<bag name="Versions" cascade="all-delete-orphan" inverse="true" lazy="false" >
<key column="DataObjectId" />
<one-to-many class="DataObjectVersion" />
</bag>
</class>
public class DataObjectVersion
{
public virtual int DataObjectVersionId { get; set; }
public virtual string Comment { get; set; }
public virtual int VersionNumber { get; set; }
public virtual int DataObjectId { get; set; }
}
<class name="DataObjectVersion" table="DataObjectVersion" lazy="false">
<id name="Id" column="DataObjectVersionId" type="int">
<generator class="assigned" />
</id>
<property name="Comment" column="Comment" type="String(512)" />
<property name="VersionNumber" column="VersionNumber" type="int" />
<property name="DataObjectId" column="DataObjectId" type="int" />
</class>