2010-06-24 8 views
2

Disons que j'ai deux entités;Mappage 1 à 0..1 dans Fluent NHibernate

QuestionAnswer(Id, AnswerValue) 
Note(Id, QuestionAnswer_Id, NoteValue) 

Comment devrais-je cartographier cela dans Fluent Nhibernate? Je sais qu'il y a une cartographie HasOne mais c'est pour un 1 à 1 sauf si je me trompe?
Je pourrais également le mapper comme un 1 à M, mais aurait besoin d'un List<Note> comme une propriété de navigation sur mon entité QuestionAnswer qui ne fait pas beaucoup de sens pour un 1 ou 0 pour moi.

Merci, Kohan

Répondre

2

J'ai aussi lutté avec cela. Ce que j'ai fini par faire est de mapper une collection privée et d'utiliser des propriétés publiques pour contrôler le nombre d'éléments dans la collection. Fondamentalement, je le traite comme une collection 1..n au lieu d'une collection 1 .. * où n = 1.

1

Utilisez l'une à une association, et mettre la note à nulle si elle est disponible.

Voir aussi Hibernate one to zero or one mapping.

+0

Voulez-vous dire que je devrais mapper un à plusieurs de QuestionAnswer à Note et un à un de Note à QuestionAnswer . Cela, comme je l'ai mentionné, nécessite une liste sur mon entité QuestionAnswer qui aura seulement 1 ou 0 objets dedans. Cela me semble étrange. avoir une liste qui n'aura jamais plus de 1 objet. – 4imble

+0

Pourquoi le ferais-tu? plusieurs-à-un et un-à-un (références et HasOne dans FNH, respectivement) n'utilisent pas de collections. –

+1

Parce que j'ai dit "OneToMany (HasMany)" qui utilise une collection. Désolé mais il semblerait que ma compréhension soit éteinte. Je pourrais le visualiser en travaillant avec un HasMany car cela fonctionnerait avec 0 ou 1 (ou plus, en raison d'être une collection). Mais ce que vous dites est que j'ai vraiment besoin de références (x => x.Note) .NotFound.Ignore(); pour le mappage de QuestionAnswer et HasOne (x => x.QuestionAnswer); pour la cartographie de ma note? – 4imble

Questions connexes