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

Accès aux données Discussion :

[Linq to Sql] Insert et delete


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 55
    Par défaut [Linq to Sql] Insert et delete
    Bonjour !



    Voilà que j'essaie de suivre les tutoriaux de la page suivante: http://msdn.microsoft.com/fr-fr/data/cc904318.aspx



    Le soucis, lorsque je veux ajouter ou supprimer un produit:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Code SnippetNorthwindDataContext db = new NorthwindDataContext 
     
    var toyProducts = from p in db.Products where p.Category.CategoryName.Contains("toy") select p
     
    db.Products.RemoveAll(toyProducts);
     
    db.submitChanges();

    Et mon code actuel (pour la suppression):


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    DataClasses1DataContext db = new DataClasses1DataContext();
     
    //Rcupration de l'id
     
    string id = this.gridStandard.CurrentRow.Cells["id"].Value.ToString();
     
    var delClients = from p in db.xdb_clients where p.id.Contains(id) select p;
     
    db.xdb_clients.removeAll(delClients); //RemoveAll n'existe pas...
     
    try
     
    {
     
    db.SubmitChanges();
     
    }
     
    catch (Exception dex)
     
    {
     
    MessageBox.Show(dex.Message, "Erreurs", MessageBoxButtons.OK, MessageBoxIcon.Information);
     
    //Gestion d'erreur dlinq, on peut faire mieux que mon msgbox?
     
    }
     
    finally
     
    {
     
    this.gridStandard.DataSource = delClients.ToList(); //Mise à jour
     
    }


    Vous trouverez les problèmes dans le code, soit, removeAll et la gestion de l'erreur...


    Ainsi que pour l'insert


    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
    27
     
    NorthwindDataContext db = new NorthwindDataContext 
     
    Category category = new Category();
     
    category.CategoryNAme = "Scott's Toys";
     
     
    Product product1 = new Product();
     
    product1.ProductName = "Toy 1";
     
     
     
    Product product2 = new Product();
     
    product2.productName = "Toy 2";
     
     
     
    category.Products.add(product1);
     
    category.Products.add(product2);
     
    db.Categories.Add(category);
     
    db.submitchanges();





    Mon code actuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Code SnippetDataClasses1DataContext db = new DataClasses1DataContext();
     
     
     
    db.SubmitChanges();
    \o/. Ici le problème, comme en haut d'ailleurs, c'est que je n'ai pas "Category" ou "Product" à quoi est-ce que sa correspond?



    Je vois dans son tutoriel "[Version RTM] La méthode Add() de l'interface ITable est renommé en InsertOnSubmit().

    Remplacer donc, dans l'exemple si-dessus, la ligne << db.Categories.Add(category) >> par << db.Categories.InsertOnSubmit(category)>>.



    Bah je n'ai pas d'interface Itable (mais la méthode insertonsubmit existe, je l'ai dans mon intellisens).


    Comment donc faire un delete et un insert en linq to sql?

    Meilleures salutations !

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Sais-tu ce qu'est une interface ? Parce que quand tu dis que tu n'as pas l'interface ITable, c'est étrange comme affirmation.

    Sinon, pour la suppression, c'est tout simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DeleteOnSubmit
    //ou
    DeleteAllOnSubmit
    Et non plus, RemoveAll.

    Pour l'ajout, c'est comme dans l'exemple que tu as donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    InsertOnSubmit
    // ou
    InsertAllOnSubmit

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 55
    Par défaut
    Salut,

    ce que je veux dire:
    var delClients = from p in db.xdb_clients where p.id.Contains(id) select p;
    erreur:
    Error 1 'int' does not contain a definition for 'Contains' and no extension method 'Contains' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)

    db.xdb_clients.DeleteOnSubmit(delClients);
    Error 2 The best overloaded method match for 'System.Data.Linq.Table<CourtageProBeta2.xdb_client>.DeleteOnSubmit(CourtageProBeta2.xdb_client)' has some invalid arguments

    delClients (de la ligne précédente)
    Error 3 Argument '1': cannot convert from 'System.Linq.IQueryable<CourtageProBeta2.xdb_client>' to 'CourtageProBeta2.xdb_client'

    ------------------------------------------------------
    pour l'insert:
    Je n'ai rien qui ressemble à Category category = new Category(); et Products product = new Products(); comme dans le tuto...

    Meilleures salutations

Discussions similaires

  1. LINQ to SQL] Tracer les requêtes SQL d'Insert/Update/Delete
    Par annalady dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/07/2009, 10h17
  2. [Linq to Sql] Problème d'insert en base de données
    Par Nyphel dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/11/2008, 23h31
  3. [Linq to Sql] Insert ou update ? telle est la question ...
    Par Ntotor dans le forum Accès aux données
    Réponses: 5
    Dernier message: 19/11/2008, 14h24
  4. [Linq To SQL] Insertion non voulue
    Par LE NEINDRE dans le forum Accès aux données
    Réponses: 3
    Dernier message: 27/10/2008, 13h51
  5. [Linq to Sql] Insertion de quelques champs uniquement
    Par binoo dans le forum Accès aux données
    Réponses: 5
    Dernier message: 16/02/2008, 14h29

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