Это - первый раз, когда я работаю с Отображением 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");
Это не работает :( Любая справка значительно ценится.
Спасибо.
Думаю, вы хотите использовать отображение Ссылки
HasOne
означает, что 2 объекта, которые вы сопоставляете вместе, имеют «взаимоисключающий» идентификатор
http: // jagregory .com / Writings / i-think-you-mean-a-many-to-one-sir /
Ссылки предназначены для отображения свойств.
public DeathMap()
{
References( x => x.Alive );
}
И вам нужен Id для codef.
public CodefMapping()
{
Id(x => x.Code);
Map(x => x.Descr);
}
По умолчанию имена столбцов соответствуют имени свойства, поэтому указывать имена столбцов необязательно, если они не отличаются.