Эй, мне нужно отобразить следующие объекты:
class Document
{
public int DocumentId { get; set; }
public DocumentList ContainingList { get; set; }
}
class DocumentList
{
public int DocumentListId { get; set; }
public DateTime LastUpdateTime { get; set; }
public IList<Doucment> Documents { get; set; }
}
С ограничением, что только один DocumentList может иметь определенный документ (хотя здесь существует таблица сбора).
Отображение должно опираться на следующие таблицы (которые не могут быть изменены ради простоты):
TB_DOC
------
DOC_ID (int, PK)
DOC_CONTENT (blob)
TB_DOC_LIST
-----------
DOC_LIST_ID (int, PK)
DOC_LIST_UPDATE_TIME (datetime)
TB_LIST_AND_DOCS
----------------
DOC_LIST_ID
DOC_ID
Таким образом, отображение, которое я должен сделать, будет таким:
enter code here
<class name="DocumentList" table="TB_DOC_LIST">
<id name="DocumentListId">
<column name="DOC_LIST_ID"/>
<generator class="assigned" />
</id>
<property name="LastUpdateTime" column="DOC_LIST_UPDATE_TIME ">
<set name="Documents" table="TB_LIST_AND_DOCS">
<key column="DOC_ID"></key>
<one-to-many class="Document" />
</set>
</class>
и:
<class name="Document" table="TB_DOC">
<id name="DocumentId">
<column name="DOC_ID"/>
<generator class="assigned" />
</id>
[ ??? ] - property to reference the "owner" document list
</class>
Теперь, следуя известным шаблонам, я не могу понять, как должна быть сопоставлена обратная ссылка из Document в DocumentList, так как у меня есть "weired"| отношение один ко многим здесь, нарушенное третьей таблицей. Я также не хочу, чтобы объект Document ссылался на IList, чтобы решить эту проблему с помощью обратной ссылки «многие ко многим», поскольку у каждого документа есть только один такой «владелец»"DocumentList. Любая изящная идея? Что я здесь неправильно понимаю?