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

ASP.NET Discussion :

Auto incrément Asp.net mvc [Débutant]


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Auto incrément Asp.net mvc
    Bonjour, j'espère qlq1 peu m'aider

    alors j'veux faire un auto-incrimente d'un ID de type "string" avec asp.net mvc

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique
    Inscrit en
    Décembre 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Informatique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 146
    Points : 158
    Points
    158
    Par défaut
    Bonjour,

    Selon la base de donnée en amont, à la place d'une chaîne de caractère je pense qu'il serai sans doute plus simple de passer par un uniqueidentifier sous SQL Server dont l'équivalent coté c# sera un Guid dont l'indexation sera forcément plus optimiser côté sql et d'une relative simplicité d'usage côté c#...

    Après cela dépend de vos contraintes...
    Mon blog est sur https://arphonis.fr et bientôt d'autres fonctionnalités seront disponible dessus.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    dacc j vais essayer

    merci merci

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Pour quel type de base de donnée tu as besoin de faire ça, c'est géré nativement avec SQL Server, tu n'as pas besoin de le faire en code.

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    la question que je me pose c'est surtout quelle utilité auras-tu pour ce champ ? Pourquoi vouloir que ce soit une chaine ? Et effectivement, les SGBD ont souvent un truc embarqué pour ça (AUTO_INCREMENT sur int en MySQL/fork, TRIGGER/SEQUENCE ou RowId sous Oracle ...).
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    j'ai une table PERSONNEL avec sql server j veux que l'ID soit de ce genre "PERS0001"

  7. #7
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Citation Envoyé par hosni.nafaa Voir le message
    j'ai une table PERSONNEL avec sql server j veux que l'ID soit de ce genre "PERS0001"
    Pourquoi ?

    Une base de données sait parfaitement gérer des ids et leurs incrémentations (c'est l'intérêt d'un base de données relationnelle).

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    oui j sais la BD gere parfaitement les IDs de type "int" et incrementation sera auto, mais avec un type "string" il faut ajouter des scripts au code source de l'appli web(c mon prb )

  9. #9
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Je sais pas comment fonctionne l'auto incrémentation sur SqlServer mais imaginons qu'on sache faire ça sur un INT. Ce que tu peux alors faire, si tu ne veux vraiment pas faire ça côté code, c'est de poser un TRIGGER AFTER INSERT et mettre à jour ton champs STRING en faisant une concat' avec ton INT auto incrémenté.
    Plus je connais de langages, plus j'aime le C.

  10. #10
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Citation Envoyé par hosni.nafaa Voir le message
    j'ai une table PERSONNEL avec sql server j veux que l'ID soit de ce genre "PERS0001"
    Pourquoi vouloir que ton id ressemble à "PERS00001" ?

    Citation Envoyé par jopopmk Voir le message
    Je sais pas comment fonctionne l'auto incrémentation sur SqlServer
    Comme les autres SGBD

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    "PERS0001" c demandé dans le cahier des charges...

  12. #12
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Les autres l'ont déja dit , j'insiste , rien ne t'empecher de garder le comportement naitf du SGBD(1,2,3 etc... ) et ensuite avoir ta variable d'affichage coté serveur qui n'est autre que "PERS" + id .

    Sinon je crois qu'il ya moyen de configurer le format d'un id directement en base mais j'ai pas été vérifier .
    throw new NoSignatureException();

  13. #13
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par katkiller Voir le message
    Comme les autres SGBD
    Comme dit plus haut : MySQL et ses forks proposent un attribut AUTO_INCREMENT, alors que pour Oracle il faudra passer par une SEQUENCE/TRIGGER. C'est les deux seuls SGBDR que je pratique (*) et la méthode n'est déjà pas la même. Du coup c'est pas tout à fait pareil pour tous. En plus je m'en voudrais de dire une ânerie sur SqlServer, alors je préfère préciser

    (*)J'espère bientôt pouvoir ajouter PostgreSQL à mon arc
    Plus je connais de langages, plus j'aime le C.

  14. #14
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Une cle primaire dans le SGBDR (quel qu'il soit) ne doit jamais avoir une signification quelconque. Donc il ne faut surtout pas avoir comme cle primaire quelque chose comme "PERS0001". C'est une regle absolue en modelisation, et le pourquoi du comment est explique sur ces liens (entre autre) :
    - De l'invariance des clés primaires
    - Conception d'une base de données - III-B-2. Clés primaires et clés étrangères
    - Bases de données relationnelles et normalisation : de la première à la sixième forme normale - 3.2.6. Clé primaire

    Et je n'aborderai bien sur pas les consequences d'avoir une cle primaire de type string sur les performances

    Il faut donc avoir une cle primaire neutre, eventuellement auto-incrementee (donc 1, 2, 3, etc.) ou un GUID, et a cote dans une autre colonne, on peut stocker, la cle "fonctionnelle" qui servira aux utilisateurs. Ou alors comme indique plus haut on peut aussi calculer la cle "fonctionnelle" dans le code de l'appli.

    Je prefere personnellement stocker la cle fonctionnelle, car si pour une raison ou une autre on doit changer la cle primaire d'un enregistrement, on peut vouloir conserver la meme cle fonctionnelle. Si on la calcule dans le code, ca va etre complique...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  15. #15
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Le mieux et le plus simple dans ton cas c'est :
    1. D'avoir une colonne de type INT autoincrémenté
    2. D'avoir une colonne calculée, qui concatène "PERS" avec la colonne ID


    Cela évite de devoir calculer l'ID dans le code client, et de devoir stocker cette information dans la BD, tout en conservant des performances optimales vis-à-vis de la clé primaire.

    Par contre, une clé primaire GUID (ou même un index en GUID en général) est généralement une TRES mauvaise idée d'un point de vue performance sans quelques précautions...
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  16. #16
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Par contre, une clé primaire GUID (ou même un index en GUID en général) est généralement une TRES mauvaise idée d'un point de vue performance sans quelques précautions...
    Effectivement ! Tu fais bien de le preciser sinon gare aux surprises (perfo, stockage, etc.)
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. Sortie de Microsoft ASP.NET MVC Beta
    Par Jérôme Lambert dans le forum Général Dotnet
    Réponses: 17
    Dernier message: 06/11/2008, 23h12
  2. [ASP.NET MVC] C'est quoi ?
    Par DranDane dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/09/2008, 11h48
  3. ASP.NET MVC Preview 4
    Par hollywood dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/07/2008, 11h57
  4. Framework ASP.NET MVC
    Par superbobo dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 02/07/2008, 16h11
  5. ASP.NET MVC Preview 2
    Par cereal59 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/04/2008, 16h41

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