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

Entity Framework Discussion :

ObjectContext.SaveChanges() erreur à la création


Sujet :

Entity Framework

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut ObjectContext.SaveChanges() erreur à la création
    Bonjour à tous,

    Voici mon problème :
    Je souhaite sauvegardé un objet passé en paramètre de ma fonction.
    Cet objet est initialisé et j'initialise d'autres champs qui ne peuvent être null.
    Lorsque je sauvegarde, j'ai le message d'erreur suivant :
    "Cannot insert the value NULL into column 'CreatedDate', table 'TORDB_DEVT.dbo.Sheet'; column does not allow nulls. INSERT fails.
    The statement has been terminated."

    Voici mon code :
    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
     
            public bool SaveSheet(Sheet sheetToSave)
            {
                bool result = false;
     
                using (var db = new DbTORContainer())
                {
                    try
                    {
                            sheetToSave.CreatedDate = DateTime.Now;
                            sheetToSave.CreatedUser = sheetToSave.CreatedUser;
                            if (sheetToSave.Guid == Guid.Empty) sheetToSave.Guid = Guid.NewGuid();
                            sheetToSave.ModifiedDate = DateTime.Now;
                            sheetToSave.ModifiedUser = sheetToSave.ModifiedUser;
     
                            db.Sheet.AddObject(sheetToSave);
                            db.SaveChanges();
                        result = true;
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
                 return result;
           }
    En regardant ce qu'il y a dans le cache de mon container, j'ai un seul objet à sauvegarder et les champs sont correctement initialisés.

    Je n'ai pas d'objet à modifier.

    Avez-vous une idée, ou rencontré ce problème ?

    Merci pour l'aide apporté.

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    J'ajoute quelques précisions :
    J'ai mis les champs non nullable nullable, histoire de voir ce qui se passe.
    Résultat, l'objet s'enregistre en base, excepté pour les champs CreatedDate, ModifiedDate et Guid.

    Ils sont bien initialisés avant de passer dans le SaveChanges(), l'enregistrement se fait.
    Quand je regarde dans ma BDD, les champs CreatedDate, ModifiedDate et Guid sont à NULL.

    Je me suis dit qu'il y a peut-être une procédure stockée dans SQL, mais je n'ai rien trouvé. Y-a-t-il possibilité de voir s'il en existe une sur un champ donné ?

    Sinon, j'utilise le framework 4, le générateur POCO avec support WCF.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Bon, finalement, il n'y a que les dates qui ne passent pas.
    Le Guid est bien initialisé dans la table.

    Je pense alors à un problème de conversion, je regarde de ce coté sur le net.

  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
    Tu utilises entity framework?
    Comment as tu crée ton edmx?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Salut !

    Oui, j'utilise Entity Framework.
    Pour l'edmx, je ne sais pas comment il a été fait, j'ai repris le projet.
    Par contre, chaque fois qu'une modification est faite sur la base, je met à jour le model à partir de la base (via clic droit sur le model)

    Ensuite je génère le code via "ADO.NET C# POCO Entity Generator With WCF Support".

    C'est un peu pour ça que je trouve étonnant que je n'arrive pas à entrer des dates.

    N'ayant pas vraiment le temps de chercher, j'ai fait au plus simple en mettant des triggers sur la base.

    Par contre, si quelqu'un a rencontré ce problème et l'a résolue, je veux bien connaitre la réponse

    Merci de t'être penché sur mon problème.

  6. #6
    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
    Avec Sql Profiler (si tu as Microsoft SqlServer) tu peux voir la requête exécutée au niveau de ton SGBD, donc savoir si tes dates sont présentes à ce moment là et en déduire si le problème vient du SGBD ou de ton application.

    (Je tenterais aussi de supprimer la table de l'edmx et de la recréer des fois que..)

  7. #7
    Membre régulier
    Homme Profil pro
    et autre ;)
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : et autre ;)
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 84
    Points
    84
    Par défaut
    Salut,

    J'ai eu le problème en changeant un champs de calculé à stocké, vérifie dans ton modele .edmx que le champ a bien la propriété "StoreGeneratedPattern" à "none"(j'imagine que chez toi elle est à computed).
    N'oubliez pas de mettre un titre explicite et précis ainsi que le tag [RESOLU] afin d'aider les gens qui pourraient avoir le même problème que vous.

Discussions similaires

  1. erreur à la création d'objet
    Par mencaglia dans le forum C++
    Réponses: 4
    Dernier message: 14/03/2006, 11h24
  2. [Sessions] Message erreur PHP création de session
    Par Ylias dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2005, 11h11
  3. Réponses: 26
    Dernier message: 27/04/2005, 11h29
  4. Réponses: 3
    Dernier message: 12/11/2003, 15h57

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