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 :

Insérer dans une table


Sujet :

NHibernate

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut Insérer dans une table
    Bonjour

    Voilà, j'ai un problème en ce moment pour insérer des données dans une table.

    Je veux insérer dans la table EtudiantsLogiciels

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE [dbo].[EtudiantsLogiciels](
    	[codePermanent] [char](12) NOT NULL,
    	[noLogiciel] [int] NOT NULL,
    	[clefPortfolio] [char](15) NULL,
    	[version] [varchar](500) NOT NULL,
     CONSTRAINT [PK_EtudiantsLogiciels] PRIMARY KEY CLUSTERED 
    (
    	[codePermanent] ASC,
    	[noLogiciel] ASC
    Le problème est que la clé primaire codePermanent n'est pas relié à une autre table. Je veux quand même insérer en settant une valeur.

    Erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object references an unsaved transient instance - save the transient instance before flushing. Type: ePortfolio.Data.Portfolio.Portfolio, Entity: ePortfolio.Data.Portfolio.Portfolio
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
         Public Sub New()
                Table("EtudiantsLogiciels")
                CompositeId().KeyReference(Function(x) x.Logiciel, "noLogiciel").KeyReference(Function(x) x.Portfolio, "codePermanent")
                'References(Function(x) x.Logiciel, "noLogiciel")
                'References(Function(x) x.Portfolio, "codePermanent")
                Map(Function(x) x.Version, "version")
            End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Public Sub New()
                Table("portfolios")
                Id(Function(c) c.ClefPortfolio, "clefPortfolio")
                Map(Function(c) c.CodeNDS, "codeNDS")
                Map(Function(c) c.CodePermanent, "codePermanent")
                Map(Function(c) c.EstValide, "estValide")
                Map(Function(c) c.DateValidee, "dateValidee")
                Map(Function(c) c.EstAnglais, "estAnglais")
                Map(Function(c) c.NoTypePortfolio, "noTypePortfolio")
            End Sub

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    Je ne comprend pas pourquoi, mais avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CompositeId().KeyReference(Function(x) x.Logiciel, "noLogiciel").KeyReference(Function(x) x.Portfolio, "codePermanent")
    Il veut insérer 2 lignes dans la base de donnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO EtudiantsLogiciels (version, noLogiciel, codePermanent) VALUES (@p0, @p1, @p2);@p0 = '' [Type: String (4000)], @p1 = 12 [Type: Int32 (0)], @p2 = 'vlddK25K4mDh7Tc' [Type: String (4000)]
    Cette ligne ne devrait pas être ajouté. Est-ce que il y a possibilité de l'ignorer ?

    Puisque que la valeur qui ajoute 'vlddK25K4mDh7Tc' est une clefPortfolio et non un codePermanent.

    Merci

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    Sinon avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Public Sub New()
                Table("EtudiantsLogiciels")
                CompositeId().KeyReference(Function(x) x.Logiciel, "noLogiciel")
                Map(Function(x) x.Version, "version")
                References(Function(x) x.Portfolio).PropertyRef(Function(x) x.CodePermanent).Column("codePermanent").Cascade.SaveUpdate()
     
     
            End Sub

    Pourtant, ça me semble bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    NHibernate.Type.StringType - binding '' to parameter: 0
    [2012-08-03 16:59:00,218] DEBUG [12] NHibernate.Type.StringType - binding 'GINE26038905' to parameter: 1
    [2012-08-03 16:59:00,218] DEBUG [12] NHibernate.Type.Int32Type - binding '12' to parameter: 2
    [2012-08-03 16:59:00,219] DEBUG [12] NHibernate.SQL - INSERT INTO EtudiantsLogiciels (version, codePermanent, noLogiciel) VALUES (@p0, @p1, @p2);@p0 = '' [Type: String (4000)], @p1 = 'GINE26038905' [Type: String (4000)], @p2 = 12 [Type: Int32 (0)]
    Erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unexpected row count: 13; expected: 1
    Je ne sais plus quoi faire

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/08/2009, 11h59
  2. [MySQL] Comment insérer dans une table des données générées dynamiquement
    Par methodman225 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/04/2008, 11h50
  3. Comment insérer dans une table?
    Par souminet dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/01/2008, 14h28
  4. Insérer dans une table des donnees formatées
    Par lothar59 dans le forum Langage
    Réponses: 1
    Dernier message: 19/09/2006, 18h35
  5. Réponses: 3
    Dernier message: 23/04/2006, 12h14

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