NHibernate. Помогите с mapping'ом
От: Аноним  
Дата: 13.07.09 11:11
Оценка:
есть три таблицы:

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></> ничего в голову не приходит.

Может это стандартно и делается с полпинка?

заранее благодарен.
Re: NHibernate. Помогите с mapping'ом
От: Ziaw Россия  
Дата: 13.07.09 11:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>есть три таблицы:


А>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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.