2010-08-13 4 views
1

J'ai une table qui fait référence à de nombreux articles. En général, je ne veux pas charger toutes ces références, pour des raisons de performances évidentes, mais dans la vue globale, je voudrais charger la même table, avec toutes les références. J'ai essayé de faire deux classes mappées sur la même table, mais elle charge les deux classes lors du chargement de la table, donc ça n'aide pas.Fuent NHIbernate deux mappages sur la même table, aucun discriminateur

Quelqu'un l'a déjà fait?

Répondre

0

Les références sont chargées paresseusement par défaut (c'est-à-dire qu'elles ne seront pas chargées à moins qu'elles ne soient réellement utilisées).

Ma suggestion est que vous créez une seule classe.

Dans tous les cas, si vous souhaitez charger uniquement certaines propriétés, vous pouvez le faire avec une requête.

+0

Merci pour ça, mais ça ne suffira pas ... Je viens de trouver une solution, un peu sale, mais ça marche, 3 classes. Une classe de base, une extension de la base, et une classe "fausse" pour Hibernate. Sinon, le chargement de la classe de base a également chargé la classe étendue ... – gougoul

+0

C'est la mauvaise façon d'utiliser NH et cela causera d'autres problèmes plus tard ... mais c'est votre appel. –

0

Cela me semble que vous utilisez Nhibernate pour le modèle de domaine et l'interrogation/reporting. Je ferais l'inverse - utilisez Nhibernate pour le modèle de domaine (les objets complexes avec des références et de la logique en eux) et votre accès aux données préférées pour l'affichage des données. Vous pouvez aller avec linq, datasets, ... Cela vous donnera la possibilité d'interroger uniquement les choses dont vous avez besoin. Vous pouvez même utiliser nhibernate fluent pour mapper automatiquement avec des conventions à une vue spécialisée. Beaucoup de flexibilité de cette façon ...

Questions connexes