Consider the following class (simplified in order to focus in the core problem):
public class Question
{
public virtual string QuestionId { get; set; }
public virtual string Text { get; set; }
public virtual string Hint { get; set; }
}
and tables:
Question
- QuestionId ((primary key, identity column and key)
- Code
QuestionTranslation
- QuestionTranslationId (primary key, identity column; not really relevant to the association)
- QuestionId (composite key element 1)
- CultureName (composite key element 2) (sample value: en-US, en-CA, es-ES)
- Text
- Hint
How I can map the Question class so the Text and Hint properties are populated using the current thread’s culture. If the thread’s culture is changed I would like the Text and Hint properties to automatically return the appropriate value without the need for the Question entity to be reloaded.
Note that I’m only outlining the relevant class and properties from the business side. I’m totally open to any new class or property needed to achieve the desired functionality.
Edited to reflect changed answer:
if you have a lot of translations then change
ICollection<QuestionTranslation> Translations { get; set; }toIDictionary<string, QuestionTranslation> Translations { get; set; }and map as<map>but normally the above should do it