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 / CurrentVersion11 "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>