This is the first time I am working with FluentNhibernate Mapping and facing a question of how to reference another table. Any help is appreciated:
I have several tables named CD_varname and all these contain two columns - CODE and DESCR.
I have one main table called Recipient and it has, say two columns, called ALIVE and SEX, both are of type number, and they reference to the tables CD_ALIVE and CD_SEX. If Alive=1 in the Recipient, then we need to get the code and descr from CD_ALIVE table where Code=1.
I have described a Codef class:
public Class Codef
{
int Code { get; set; }
string Descr { get; set; }
}
My Recipient Class assigns these to a component. Recipient class looks like this:
public Class IRecepient
{
int ID { get; set; }
Birth Birth {get; set;}
Death Death { get; set; }
}
Where my Birth and Death classes are:
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
}
and my Death Class:
public Class Death
{
DateTime DeathDate { get; set; }
Codef Alive { get; set; }
}
so, the main column "Alive" in Recipient is actually referencing my Recipient.Death.Alive.Code
I Have a codef mapping class:
public CodefMapping()
{
Map(x => x.Code, "CODE");
Map(x => x.Descr, "DESCR");
}
I am trying to do the recipient mapping and this is where I am stuck. Can I do something like this:
HasOne<CodefMapping>(c => c.Death.Alive)
.PropertyRef(c => c.Code)
.PropertyRef(c => c.Descr)
.WithForeignKey("ALIVE");
It is not working :( Any help is greatly appreciated.
Thank you.
References is for a property mapping.
And you need an Id for codef.
The default convention is for column names to match the property name, so you do not have to specify the column names unless they are different.
I think you want to use the
References
mappingHasOne
means that the 2 entities that you are mapping together share a "mutually exclusive" identifierhttp://jagregory.com/writings/i-think-you-mean-a-many-to-one-sir/