1. #1
    Membre à l'essai
    Inscrit en
    novembre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : novembre 2007
    Messages : 70
    Points : 23
    Points
    23

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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).

  2. #2
    Rédacteur

    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2003
    Messages
    2 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : mars 2003
    Messages : 2 728
    Points : 4 332
    Points
    4 332

    Par défaut

    Regarde du côté de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IDataReader.NextResult();
    et tu trouveras ton bonheur.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre à l'essai
    Inscrit en
    novembre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 27

    Informations forums :
    Inscription : novembre 2007
    Messages : 70
    Points : 23
    Points
    23

    Par défaut

    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.

  4. #4
    Rédacteur

    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    mars 2003
    Messages
    2 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Congo-Brazzaville

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

    Informations forums :
    Inscription : mars 2003
    Messages : 2 728
    Points : 4 332
    Points
    4 332

    Par défaut

    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 !

  5. #5
    Membre Expert
    Inscrit en
    février 2005
    Messages
    1 268
    Détails du profil
    Informations forums :
    Inscription : février 2005
    Messages : 1 268
    Points : 1 928
    Points
    1 928

    Par défaut

    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

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo