есть три таблицы:
COMPANY(ID_COMPANY*, NAME, ...); — компания
REPORT(ID_REPORT*, NAME, ...); — содержит информацию о местонахождении отчетов компании
COMPANY_REPORT(ID_COMPANY* (FK COMPANY), ID_REPORT* (FK REPORT), ...); — у каждой компании свой набор отчетов потому вот такая связь.
Звездочкой помечены поля входящие в PK.
Есть приложение — экземпляр приложения знает о ID_COMPANY.
Есть класс:
class Report
{
public virtual string Id { get; set; }
public virtual string Name { get; set; }
...
}
Нужно замапить на него табличку REPORT, но с учетом связи COMPANY_REPORT.
Как? Кроме ручного написания всяких <sql-xxx></> ничего в голову не приходит.
Может это стандартно и делается с полпинка?
заранее благодарен.
Здравствуйте, <Аноним>, Вы писали:
А>есть три таблицы:
А>COMPANY(ID_COMPANY*, NAME, ...); — компания
А>REPORT(ID_REPORT*, NAME, ...); — содержит информацию о местонахождении отчетов компании
А>COMPANY_REPORT(ID_COMPANY* (FK COMPANY), ID_REPORT* (FK REPORT), ...); — у каждой компании свой набор отчетов потому вот такая связь.
А>Нужно замапить на него табличку REPORT, но с учетом связи COMPANY_REPORT.
А в чем проблема? Создетаете класс CompanyReport, и маппите его композитом к отчету:
class Report
{
public ISet<CompanyReport> CompanyReports {get;set;}
}
<bag name="CompanyReports" table="COMPANY_REPORT">
<key column="ID_REPORT"/>
<composite-element class="CompanyReport">
<many-to-one name="Company" type="Company" column="ID_COMPANY" not-null="true"/>
<property name="..." />
<property name="..." />
<property name="..." />
</composite-element>
</bag>
... << RSDN@Home 1.2.0 alpha 4 rev. 1228>>