none
InsertOnSubmit et transaction.Complete

    Question

  • J'essaye d'insérer un nouvel enregistrement dans une table société. Le code déroule sans bug, malheureusement rien ne s'insère..

    using (LinqToSql.WineDataContext context = new LinqToSql.WineDataContext ())
                {
                    using(TransactionScope transaction =new TransactionScope()){
     
                        //Ajout,modification ou suppression d'enregistrement du DataContext
     
                        LinqToSql.Societe NouvelleSociete = new LinqToSql.Societe { nom = NomS.Text , adresse1 = Adresse1S.Text , adresse2 = Adresse2S.Text, codePostal = codePostalS.Text ,commune = CommuneS.Text, pays = ComboPays.Value.ToString ()};
     
                        context.Societes.InsertOnSubmit(NouvelleSociete);
     
                        //Envoi des modifications à la base de données
                        context.SubmitChanges();
     
                        // Les enregistrements de la base de données ne sont pas modifiés tant que la transaction n'est pas validée
                        transaction.Complete();
     
                    }
                }
    Merci d'avance de votre aide.

    dimanche 14 juin 2015 13:52

Toutes les réponses

  • Bonsoir,

    Si vous n'êtes pas dans une transaction, l'insertion s'effectue bien ?

    NB : la techno LinqToSql a été abandonnée depuis bien longtemps par Microsoft. Passez à Entity Framework.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    dimanche 14 juin 2015 19:02
  • Bonjour,

    Même sans transaction l'insertion ne s'effectue pas !

    Par contre, débutant le projet, merci pour l'info, je vais passer à Entity Framework.

    Guillaume

    lundi 15 juin 2015 12:12
  • Bonjour,

    Je suis en train de modifier le projet avec Entity Framework.

    Par contre, je trouve l'exécution très lente....Le petit chargement de la combo prend quelques secondes :

    //load entities to the combo box
                WineModel WineM = new WineModel();
                var PaysCombo = WineM.pays.OrderBy(x => (x.name)).ToList();
                toto.ItemsSource = PaysCombo;
                toto.DisplayMemberPath = "name";
                toto.ValuePath = "id";
                toto.SelectedIndex = 0;

    Est ce normal ?

    Cordialement

    lundi 15 juin 2015 16:39
  • Non.

    Il y a bcp d'enregistrement dans votre table ?


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    lundi 15 juin 2015 18:50
  • non, la liste des pays (200).

    Après j'ai lu qu'apparemment la première requête à la base Entity Framework est souvent longue..?

    jeudi 18 juin 2015 12:22
  • Oui mais bon, normalement, ca casse pas 3 pattes à un canard ;-)

    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    jeudi 18 juin 2015 12:35
  • Bonsoir,

    Donc, je progresse :

    J'effectue une insertion :

     private void Button_Click(object sender, RoutedEventArgs e)
            {
                Societe societe = new Societe();
    
                societe.nom = NomS.Text;
                societe.adresse1 = Adresse1S.Text;
                societe.adresse2 = Adresse2S.Text;
                societe.codePostal = CodePostalS.Text;
                societe.commune = VilleS.Text;
                societe.pays = ComboPays.Value.ToString();
                societe.fax = FaxS.Text;
                societe.tel = TelS.Text;
                societe.mail = MailS.Text;
    
                this.WineM.Societes.Add(societe);
                this.WineM.SaveChanges();
            }

    Et là, ma base est dans le répertoire projet/base.mdf.

    pourquoi, ai je eu une duplication de base dans projet/bin/debug/base.mdf et enregistrement dans cette base ??!

    je ne peux pas rester sur une insertion sous projet/base.mdf sans duplication ?

    mercredi 24 juin 2015 15:39