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.
I think you want to use the References
mapping
HasOne
means that the 2 entities that you are mapping together share a "mutually exclusive" identifier
http://jagregory.com/writings/i-think-you-mean-a-many-to-one-sir/
References is for a property mapping.
public DeathMap()
{
References( x => x.Alive );
}
And you need an Id for codef.
public CodefMapping()
{
Id(x => x.Code);
Map(x => x.Descr);
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With