Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre à l'essai
    Inscrit en
    octobre 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 268
    Points : 23
    Points
    23

    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 :
    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 :
    object references an unsaved transient instance - save the transient instance before flushing. Type: ePortfolio.Data.Portfolio.Portfolio, Entity: ePortfolio.Data.Portfolio.Portfolio
    Code :
    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 :
    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 à l'essai
    Inscrit en
    octobre 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 268
    Points : 23
    Points
    23

    Par défaut

    Je ne comprend pas pourquoi, mais avec ceci :

    Code :
    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 :
    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 à l'essai
    Inscrit en
    octobre 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 268
    Points : 23
    Points
    23

    Par défaut

    Sinon avec ceci :

    Code :
    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 :
    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 :
    Unexpected row count: 13; expected: 1
    Je ne sais plus quoi faire

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •