NHibernate - Comment faire la carte pour une classe qui n'a pas de table (pour les requêtes sql personnalisées)

Mise à jour - Édité config pour des raisons de lisibilité
dans la

Salut,

J'ai été en apprentissage NHibernate pour un jour ou deux, mais de rester bloqué sur un point.

J'ai besoin d'être en mesure d'exécuter des procédures stockées personnalisées et l'utilisation NHibernate à la carte en arrière de classes du domaine.

J'ai ce travail pour le scénario où la requête personnalisée de cartes de retour à un objet qui correspond à une table de base de données, comme illustré par de très nombreux nhibernate exemple (Voir la première section ci-dessous).

Cependant dans la config de la seconde section ci-dessous, la requête tire seulement 2 colonnes de la table cible. Pour cette raison, j'ai créé un objet personnalisé, de sorte que NHibernate a quelque chose pour mapper les valeurs de retour. La coutume des propriétés de l'objet ont le même nom que le retour des colonnes de la procédure personnalisée.

Quand je lance mes tests, j'obtiens une exception comme:

NHibernate.MappingException: Aucun
persister pour:
Proj.DataEntityTracker.Domaine.Les entités.CustomObject

Donc je suppose que la cartographie sous sql-section requête n'est pas assez pour NHibernate pour mapper les valeurs de retour pour les propriétés de l'objet.

Donc ma question est - comment puis-je configurer un mappage pour lesquels il n'existe pas d'équivalent de la table dans la base de données que j'ai la carte les résultats d'une procédure stockée à cet objet?

 
<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-cartographie-2.2" 
assembly="Proj.DataEntityTracker.Le domaine" 
namespace="Proj.DataEntityTracker.Domaine.Les entités"> 

<class name="TrackedEntityProperty" table="TrackedEntityProperties"> 
<id name="ID" type="Int32" unsaved-value="0"> 
<generator class="native"></générateur> 
</id> 
<property name="TrackedEntityID" /> 
<property name="Nom" /> 
<property name="CreatedDate" /> 
<property name="ChangedDate" /> 
<property name="Type" /> 
<property name="CurrentValue" /> 
<property name="RequestPropertyValueQuestion" /> 
<property name="NullResponseIsAcceptable" /> 
<property name="Duplication" /> 
<property name="Fréquence" /> 
<property name="est actif" /> 
<property name="IsDeleted" /> 
<property name="LastUpdateTaskGenerated" /> 
<property name="LastUpdateTaskCompleted" /> 
<property name="LastUpdateTaskCancelled" /> 
</classe> 

<sql-query name="usp_GetTrackedEntityPropertiesDueforupdate" > 
<return alias="usp_GetTrackedEntityPropertiesDueforupdate" class="TrackedEntityProperty"> 

<le retour-property name="ID" column="ID" /> 
<le retour-property name="TrackedEntityID" column="TrackedEntityID" /> 
<le retour-property name="Name" column="Nom" /> 
<le retour-property name="CreatedDate" column="CreatedDate" /> 
<le retour-property name="ChangedDate" column="ChangedDate" /> 
<le retour-property name="Type de données" column="DataType" /> 
<le retour-property name="CurrentValue" column="CurrentValue" /> 
<le retour-property name="RequestPropertyValueQuestion" column="RequestPropertyValueQuestion" /> 
<le retour-property name="NullResponseIsAcceptable" column="NullResponseIsAcceptable" /> 
<le retour-property name="Duplication" column="Duplication" /> 
<le retour-property name="Fréquence" column="Fréquence" /> 
<le retour-property name="est actif" column="est actif" /> 
<le retour-property name="IsDeleted" column="IsDeleted" /> 
<le retour-property name="LastUpdateTaskGenerated" column="LastUpdateTaskGenerated" /> 
<le retour-property name="LastUpdateTaskCompleted" column="LastUpdateTaskCompleted" /> 
<le retour-property name="LastUpdateTaskCancelled" column="LastUpdateTaskCancelled" /> 

</retour> 

exec usp_GetTrackedEntityPropertiesDueforupdate :TrackedEntityID 

</sql-query> 

<sql-query name="usp_SomeCustomSproc"> 
<return alias="usp_SomeCustomSproc" class="CustomObject"> 

<le retour-property name="ID" column="ID" /> 
<le retour-property name="Name" column="Nom" /> 

</retour> 

exec usp_SomeCustomSproc :TrackedEntityID 

</sql-query> 

</hibernate-mapping> 

InformationsquelleAutor gb2d | 2011-05-04