NHibernate-Filtersammlung

Mit NHibernate möchte ich eine Sammlung in einer Klasse so filtern, dass sie NUR eine Teilmenge möglicher Objekte enthält. Nachfolgend füge ich ein Datenbeispiel zur Erläuterung hinzu. Ich kann dies mit NHibernate nicht tun.

Tabelle: DatenobjektDataObjectId (PK) / Name / CurrentVersion
11          "data.txt"      2
12          "info.txt"      3
Tabelle: DataObjectVersionId / Comment / VersionNumber / 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

Ich möchte einem nicht fremden Schlüssel DataObject.CurrentVersion = DataObjectVersion.VersionNumber für jedes DataObject in einem Befehl beitreten.

Hier sind die Klassen und Zuordnungsdateien:

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>  

Antworten auf die Frage(2)

Ihre Antwort auf die Frage