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

NHibernate Discussion :

[NHibernate] paramétrage pour interdire le cast automatique


Sujet :

NHibernate

  1. #1
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut [NHibernate] paramétrage pour interdire le cast automatique
    Bonjour,

    Nous avons constaté dans notre utilisation de Nhibernate qu'il arrive à mettre 3000000000 dans un int sans lever aucune exception. En faite il tronque le double en INt à sa valeur max.

    Quel paramètre dans tous ceux existants nous permettrait de lever une exception ?

    Merci .
    Emmanuel Lecoester
    => joomla addict.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Le réel problème est pourquoi un champs int recevrait une telle valeur? Incohérence dans le mappage?

  3. #3
    Membre expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Points : 3 266
    Points
    3 266
    Par défaut
    On peut dire çà comme çà

    colonne en number(10) mappé sur un int. Cà marche un temps .

    Par contre ce qui est étonnant c'est qu'aucune exception ne soit levée par NHibernate
    Emmanuel Lecoester
    => joomla addict.

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    En effet, je pense que si tu regardes du côté des sources nhibernate tu vas trouver soit un try/catch soit lui http://msdn.microsoft.com/fr-fr/library/a569z7k8.aspx

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Parce que tu mappes un UInt32 en fait;est que relatif à MSDN :

    The .NET Framework also includes an unsigned 32-bit integer value type, UInt32, which represents values that range from 0 to 4,294,967,295.
    Et le dialect Oracle de base
    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
     
    protected virtual void RegisterNumericTypeMappings()
    		{
    			RegisterColumnType(DbType.Boolean, "NUMBER(1,0)");
    			RegisterColumnType(DbType.Byte, "NUMBER(3,0)");
    			RegisterColumnType(DbType.UInt16, "NUMBER(5,0)");
    			RegisterColumnType(DbType.UInt32, "NUMBER(10,0)");			RegisterColumnType(DbType.UInt64, "NUMBER(20,0)");
    
    			RegisterColumnType(DbType.Currency, "NUMBER(20,2)");
    			RegisterColumnType(DbType.Currency, "NUMBER($p,$s)");
    			RegisterColumnType(DbType.Single, "FLOAT(24)");
    			RegisterColumnType(DbType.Double, "DOUBLE PRECISION");
    			RegisterColumnType(DbType.Double, 19, "NUMBER($p,$s)");
    			RegisterColumnType(DbType.Decimal, "NUMBER(19,5)");
    			RegisterColumnType(DbType.Decimal, 19, "NUMBER($p,$s)");
    		}

    Donc 3 000 000 000 passent sans souci, mais c'est une abomination comme mapping...

    Heureusement que le framework arrive à gérer cette conversion lors de la génération des classes.


    Il te suffit dans ce cas d'implémenter ton propre dialect, ou ton propre type.
    C'est un héritage de la version Java et du machin Oracle.

Discussions similaires

  1. [débutant] Problème pour générer un login automatiquement
    Par zamoto dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/05/2006, 20h12
  2. fonction pour interdire un caractere dans un champ en php
    Par carmen256 dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2006, 22h41
  3. [VB6]Aide pour systeme de MAJ automatique d'un programme
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/01/2006, 05h44
  4. Paramétrage pour l'impression
    Par zorba49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/08/2005, 10h41
  5. marquage pour interdire l'envoi ultérieur vers excel
    Par olemoine dans le forum Access
    Réponses: 16
    Dernier message: 05/01/2005, 21h23

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