IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

c# + dbml, utilisation d'une procédure stockée


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut c# + dbml, utilisation d'une procédure stockée
    bonjour tout le monde, bon voila j'essaie d'utiliser une procédure stockée créée sous sqlserver dans mon appli c#.
    j'ai créé un dbml, donc un mapping de ma base et tout ...

    pour la table "client" (comme pour les autres) j'ai trois 3 niveaux de classes dans mon projet :
    - entities
    - dataAccess
    - generated (un sous niveau de dataAccess)

    j'ai bien incorporé ma procédure stockée "Keyword_client" dans le dbml !
    maintenant, j'aimerais reporter les résultats de ma procédure stockée pour les incorporer dans une liste de type "client".
    on m'a dit que je devais utiliser une classe s'appelant comme ma procédure stockée, mais avec le mot "Result" à la fin, hors celle-ci ne semble pas exister

    voici ce que j'ai tenté dans un premier temps (dans ma classe clientDAL de DataAccess, pas le generated ! ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static List<client> GetListWithKeyword(keywordClient kw)
            {
                using (PannikausDataContext db = DbManager.DataContext)
                {
                    List<Keyword_clientResult> mes_clients = db.Keyword_client(kw.nom_client, kw.prenom_client, kw.email_client, kw.ville_client).ToList();
                }
            }
    "Keyword_clientResult" et ".ToList()" sont en rouge

    savez-vous ce que je dois faire pour extraire mes résultats et faire une nouvelle collection de type client ?
    merci pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    je viens d'aller voir le code de mon dbml, le dataclasse.designer.cs, et voici le code que j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.Keyword_client")]
    		public int Keyword_client([global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(30)")] string nom_client, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(30)")] string prenom_client, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(30)")] string email_client, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(30)")] string ville_client)
    		{
    			IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), nom_client, prenom_client, email_client, ville_client);
    			return ((int)(result.ReturnValue));
    		}
    ce code me fourni un résultat de type INT O_o

    la fonction que j'espérais trouver devrait plutot ressembler à celle-ci, qu ej'ai trouvé sur le site de msdn :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [Function(Name="dbo.Customers By City")]
    public ISingleResult<CustomersByCityResult> CustomersByCity([Parameter(DbType="NVarChar(20)")] string param1)
    {
        IExecuteResult result = this.ExecuteMethodCall(this,         ((MethodInfo)(MethodInfo.GetCurrentMethod())), param1);
        return ((ISingleResult<CustomersByCityResult>)(result.ReturnValue));
    }
    seulement je ne dois pas apporter de modifications manuellement à mon dbml car son code se régénère dans le cas d'une modif sur la base de données.

    voici pourtant la procédure que j'ai créé sous sqlserver :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    CREATE PROCEDURE Keyword_client
    @nom_client VARCHAR(30), @prenom_client VARCHAR(30), @email_client VARCHAR(30), @ville_client VARCHAR(30)
    AS
    	DECLARE @requete VARCHAR(1000)
    	DECLARE @i INT
     
    	SET @i = 0
    	SET @requete = 'SELECT
    						id_client,
    						mdp_client,
    						email_client,
    						nom_client,
    						prenom_client,
    						date_naissance_client,
    						date_inscription_client,
    						rue_client,
    						cp_client,
    						ville_client,
    						supp_adr_client,
    						tel_client,
    						gsm_client,
    						nb_points_cumul_client
    				    FROM
    						client'
     
    	/* nom_client */
    	IF @nom_client IS NOT NULL
    	BEGIN
    		SET @i += 1
     
    		IF @i = 1
    			BEGIN
    				SET @requete = @requete + ' WHERE '
    			END
    		ELSE
    			BEGIN
    				SET @requete = @requete + ' AND '
    			END
     
    		SET @requete = @requete + 'nom_client LIKE ''' + @nom_client + '%'''
    	END
     
    	/* prenom_client */
    	IF @prenom_client IS NOT NULL
    	BEGIN
    		SET @i += 1
     
    		IF @i = 1
    			BEGIN
    				SET @requete = @requete + ' WHERE '
    			END
    		ELSE
    			BEGIN
    				SET @requete = @requete + ' AND '
    			END
     
    		SET @requete = @requete + 'prenom_client LIKE ''' + @prenom_client + '%'''
    	END
     
    	/* email_client */
    	IF @email_client IS NOT NULL
    	BEGIN
    		SET @i += 1
     
    		IF @i = 1
    			BEGIN
    				SET @requete = @requete + ' WHERE '
    			END
    		ELSE
    			BEGIN
    				SET @requete = @requete + ' AND '
    			END
     
    		SET @requete = @requete + 'email_client LIKE ''' + @email_client + '%'''
    	END
     
    	/* ville_client */
    	IF @ville_client IS NOT NULL
    	BEGIN
    		SET @i += 1
     
    		IF @i = 1
    			BEGIN
    				SET @requete = @requete + ' WHERE '
    			END
    		ELSE
    			BEGIN
    				SET @requete = @requete + ' AND '
    			END
     
    		SET @requete = @requete + 'ville_client LIKE ''' + @ville_client + '%'''
    	END
     
    	EXEC(@requete)
    GO
    dois-je modifier ma procédure stockée ?

Discussions similaires

  1. [CR XI] Utilisation d'une procédure stockée avec paramètre(s)
    Par ferranzo dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 08/09/2011, 20h26
  2. Utilisation d'une Procédure Stockée avec BO
    Par kfmystik dans le forum Designer
    Réponses: 2
    Dernier message: 02/12/2008, 10h04
  3. Utilisation d'une procédure stockée dans un trigger
    Par CleeM dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/06/2008, 17h41
  4. utilisation d'une procédure stockée
    Par Klemsy78 dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/08/2006, 14h05
  5. utilisation d'une procédure stockée
    Par Klemsy78 dans le forum Delphi
    Réponses: 3
    Dernier message: 22/08/2006, 14h05

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