Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > NHibernate
NHibernate Forum d'entraide sur l'utilisation du mappeur objet/relationnel NHibernate.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/06/2011, 19h49   #1
Fabthebug
Membre à l'essai
 
Inscription : novembre 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2007
Messages : 70
Points : 21
Points : 21
Par défaut NHibernate select inaccessible

Bonjour,

J'ai beaucoup de mal à trouver un titre clair pour mon problème. Voici une requête que j'essaie d'exécuter dans mon mapping NHibernate
Code :
1
2
3
4
5
6
7
8
9
10
<sql-query name="spInventoryMove">
  <![CDATA[
    declare @intAdjID int
 
    exec spInventoryMove :ProID :LocID
 
    select * from tblAdj where adjID = @intAdjID
   ]]>
    <return class="V2K.WMS.Data.InventoryAdjData, V2K.WMS.Data"/>
  </sql-query>
Le problème est quand j'appelle cette requête dans mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 RepositoryExceptionWrapper.Wrap(GetType(), delegate()
            {
                IDbCommand command = CurrentSession.Connection.CreateCommand();
 
                command.CommandText = "spInventoryMove";
                command.CommandType = CommandType.StoredProcedure;
 
                IDbDataParameter parameter = command.CreateParameter();
                parameter.ParameterName = "@ProID";
                parameter.Value = ProID;
                command.Parameters.Add(parameter);
 
                parameter = command.CreateParameter();
                parameter.ParameterName = "@LocID";
                parameter.Value = LocID;
                command.Parameters.Add(parameter);
 
                //command.ExecuteNonQuery();
                IDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    result = new InventoryAdjData();
                    result.Id = reader[0];
                }
 
                reader.Close();
            });
Seconde methode :
Code :
1
2
3
4
5
6
7
8
9
10
 
RepositoryExceptionWrapper.Wrap(GetType(), delegate()
{
   IQuery query = CurrentSession.GetNamedQuery("spInventoryMove");
 
   query.SetString("ProID", ProID);
   query.SetNullableInt32("LocID", LocID);
 
   result = query.UniqueResult<InventoryAdjData>();
});
Je n'ai que le retour de la stored procedure, ce que j'aimerais c'est récupérer le select... comment puis-je faire ? (dans SQL Server, j'ai 2 résultats : le retour de la stored proc et celui du select).
Fabthebug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 16h24   #2
WOLO Laurent
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 698
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 36
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 698
Points : 4 073
Points : 4 073
Envoyer un message via Yahoo à WOLO Laurent
Regarde du côté de la méthode
Code :
IDataReader.NextResult();
et tu trouveras ton bonheur.
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 20h22   #3
Fabthebug
Membre à l'essai
 
Inscription : novembre 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2007
Messages : 70
Points : 21
Points : 21
J'ai tout essayé et je n'ai pas trouvé de solution (j'avais bien entendu pensé au NextResult() sans succès )... jusqu'à ce que le développeur qui s'occupe des stored procedures me dise "Je peux te changer les retours si tu veux" -_-

Mais merci tout de même pour l'aide. Pour ceux qui se retrouveraient dans la même situation la seule méthode que j'ai trouvé est de changer le retour de la procédure.
Fabthebug est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 20h27   #4
WOLO Laurent
Rédacteur/Modérateur

 
Avatar de WOLO Laurent
 
Homme Laurent WOLO
Architecte de base de données
Inscription : mars 2003
Messages : 2 698
Détails du profil
Informations personnelles :
Nom : Homme Laurent WOLO
Âge : 36
Localisation : Congo-Brazzaville

Informations professionnelles :
Activité : Architecte de base de données
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 2 698
Points : 4 073
Points : 4 073
Envoyer un message via Yahoo à WOLO Laurent
Est ce que tu avais activé MARS dans ta chaine de connexion ?
__________________

Découvrez la FAQ de MS SQL Server.
La chance accorde ses faveurs aux esprits avertis !
WOLO Laurent est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h07   #5
B.AF
Membre Expert
 
Inscription : février 2005
Messages : 1 238
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 238
Points : 1 655
Points : 1 655
La réponse est que tu devrais créer un mapping d'entité et spécifier la SP qui s'en occupe.

Ca ne peut donc pas marcher, il faut juste que le select soit dans la SP et tu n'as pas besoin de déclarer des paramétres.

De l'aide
B.AF est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web