HasOne по сравнению со ссылками, отображающими быстрый NHibernate

Это - первый раз, когда я работаю с Отображением FluentNhibernate и направлением с вопросом того, как сослаться на другую таблицу. Любая справка ценится:

У меня есть несколько таблиц под названием CD_varname и все, что они содержат два столбца - КОД и DESCR.

У меня есть одна основная таблица под названием Получатель, и она, скажем два столбца, назвала ЖИВЫМ и ПОЛ, оба имеют число типа, и они ссылаются к таблицам CD_ALIVE и CD_SEX. Если Alive=1 в Получателе, то мы должны получить код и descr от таблицы CD_ALIVE где Code=1.

Я описал класс Codef:

public Class Codef
{
    int Code { get; set; }
    string Descr { get; set; }
}

Мой Класс Получателя присваивает их компоненту. Класс получателя похож на это:

 public Class IRecepient
{
    int ID { get; set; }
    Birth Birth {get; set;}
    Death Death { get; set; }
}

Где мои классы Рождения и Смерти:

public Class Birth
{
    DateTime BDate { get; set; }
    Codef Sex { get; set; }
    Codef Ethnicity { get; set; } //CD_ETHNICITy Table
    Codef Race { get; set; } //CD_RACE Table
}

и мой Смертельный Класс:

public Class Death
{
    DateTime DeathDate { get; set; }
    Codef Alive { get; set; }
}   

таким образом основной столбец "Alive" в Получателе на самом деле ссылается на моего Получателя. Смерть. Живой. Код

У меня Есть codef отображающийся класс:

   public CodefMapping()
         {
             Map(x => x.Code, "CODE");
             Map(x => x.Descr, "DESCR");
         }

Я пытаюсь сделать получателя, отображающегося, и это - то, где я застреваю. Могу я делать что-то вроде этого:

 HasOne<CodefMapping>(c => c.Death.Alive)
                    .PropertyRef(c => c.Code)
                    .PropertyRef(c => c.Descr)
                    .WithForeignKey("ALIVE");

Это не работает :( Любая справка значительно ценится.

Спасибо.

8
задан Lachlan Roche 4 March 2010 в 22:03
поделиться

2 ответа

Думаю, вы хотите использовать отображение Ссылки

HasOne означает, что 2 объекта, которые вы сопоставляете вместе, имеют «взаимоисключающий» идентификатор

http: // jagregory .com / Writings / i-think-you-mean-a-many-to-one-sir /

18
ответ дан 5 December 2019 в 08:51
поделиться

Ссылки предназначены для отображения свойств.

public DeathMap()
{
    References( x => x.Alive );        
}

И вам нужен Id для codef.

public CodefMapping()
{
    Id(x => x.Code);
    Map(x => x.Descr);
}

По умолчанию имена столбцов соответствуют имени свойства, поэтому указывать имена столбцов необязательно, если они не отличаются.

1
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: