2010-10-28 1 views
1

J'ai 2 tables comme ceci: (S'il vous plaît noter le schéma db non standard nommage)propriétés de mappage d'une table étrangère deux fois en Fluent NHibernate

table T_Pen 
    TP_ID 
    TP_PrimaryColorID 
    TP_SecondaryColorID 
    ... 

table E_Color 
    EC_ID 
    EC_ColorName 
    ... 

Et je veux créer un mappage des 2 tables un objet de domaine Pen utilisant Fluent NHibernate.

class Pen 
{ 
    PenID; 
    PrimaryColorName; 
    SecondaryColorName; 
    ... 
} 

Comment puis-je faire cela?

Répondre

1

Je ne pense pas que vous seriez en mesure d'insérer/mettre à jour plus si vous deviez seulement faire référence au nom.

Vous pouvez créer une vue de PenColour ou masquer la référence réelle dans votre classe de crayon et exposer uniquement la propriété Name.

+0

Ok, je comprends. Fondamentalement, une autre classe (par exemple PenColor) est nécessaire en tant que vue à des fins de lecture seule, et si la mise à jour et l'insertion sont possibles, l'objet Pen doit toujours se référer aux objets Couleur (ce qui n'est pas trop grave, mais sorte de fuite d'abstraction), non? – Weiming

+0

Une question: quand vous dites une "vue" de PenColor, voulez-vous dire une vue de la base de données, ou une classe? – Weiming

0

classe Stylo {
int PenID;
Couleur PrimaryColor;
Couleur SecondaryColor;
}

classe Color
{
int ColorID;
chaîne NomCouleur;

}

classe ColorMap
{
Id (x => x.ColorID);
Carte (x => x.CouleurNombre);
}

classe PenMap
{
Id (x => x.PenID);
Références (x => x.PrimaryColor) .Column ("TP_PrimaryColorID");
Références (x => x.SecondaryColor) .Column ("TP_SecondaryColorID");
}

+0

Je ne veux pas faire référence à un objet Color dans un objet Pen, juste le nom des couleurs, est-ce que cela peut être fait? – Weiming

+0

Oui, vous pouvez créer une vue qui contient deux colonnes varchar PrimaryColorName et SecondaryColorName. La limitation est que vous ne pourrez pas mettre à jour ou insérer. – tonyjy

+0

Merci! Je pense que user456813 a donné la même réponse. – Weiming

Questions connexes