I'm using Fluent NHibernate and have two tables;
Customer [ID, Name, LanguageID]
Languages [ID, Description]
I have a Customer entity with the following properties; ID, Name, LanguageID, Language
What I would like to do is to join to the Languages table to get the language description and put it in the language property of the customer entity.
I have tried using Join but I can't get it to use the LanguageID field on the customer table to join to the Languages table - it keeps wanting to use 'ID'.
My mapping looks like;
Table("Customers");
Not.LazyLoad();
Id(c => c.ID).GeneratedBy.Assigned();
Map(c => c.Name);
Map(c => c.LanguageID);
Join("Languages", join =>
{
join.KeyColumn("ID");
join.Map(prop => prop.Language).Column("Description");
});
I haven't used Join before but I think you want the foreign key from Customer in your mapping:
Table("ScriptActivities");
Not.LazyLoad();
Id(c => c.ID).GeneratedBy.Assigned();
Map(c => c.Name);
Map(c => c.LanguageID);
Join("Languages", join =>
{
join.KeyColumn("LanguageID");
join.Map(prop => prop.Language).Column("Description");
});
Edited to add: The best example I could find on the join mapping is Ayende's blog. From that example, it appears to me that join is expecting the ID of the mapped object to be a foreign key in the joined table. Your schema has the joined table ID as a FK in the mapped object so join won't work. I suggest creating a view combining Customer and Language and mapping that.
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