Bonjour,
Actuellement j'utilise le DataSet généré à partir de ma table Sql Compact Edition. Tout marche pour le mieux pour un insert,un select basique. Maintenant je voudrai faire un formulaire de recherche donc avec des jointures entres tables.
Je me suis tourné vers le linq et voici ma requéte:
Problème : le DataSet lève des exception quand la colonne est null (enfin pour etre exact DBnull). Or il semble ne pas vouloir dns le designer me mettre une string vide ou mettre null, je ne peu pas choisir autre chose que "throw exception".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 var results = from Chats in db.AsEnumerable() join Personnes in dbpersonnes.AsEnumerable() on Chats.Id_propriétaire equals Personnes.id into lien where Chats.Nom == "tama" from subPersonnes in lien.DefaultIfEmpty() select new { Numero_puce = (Chats.Numero_Puce==null? "" : Chats.Numero_Puce), Race = (Chats.Race==null?"":Chats.Race), Couleur = (Chats.Couleur==null?"":Chats.Race), Nom = Chats.Nom, Telephone = (subPersonnes == null ? "" : subPersonnes.Telephone) };
C'est un probléme connu il semblerai. J'ai trouver ce post: http://blog.evolvedsoftwarestudios.c...yped-datasets/
Mais les solutions ne fonctionnent pas pour moi (ou en tout cas la modification de l'xml).
Je pense devoir faire la jointure à la main. Actuellement je fait la recherche de cet facon:
Donc je pense faire un select dans le select si j'ai l'id qui n'est pas vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DataRow[] foundRows; foundRows = db.Select("Nom = 'toto'"); DataTable dtselect = db.Clone(); foreach (DataRow r in foundRows) { dtselect.ImportRow(r); } chatsBindingSource1.DataSource = dtselect;
Avez vous une solution pour le linq? ou alors une remarque sur mon select ou ma jointure manuel?
Autre petite question, actuellement je code tout dans mon controlleur, la recherche , l'ajout... le mieux sa serrai de crée un classe chat.cs par exemple et faire des méthodes non? L'utilisation de classe est simple?
Je débute encore en c# donc si vous avez des conseils je suis preneur.
Partager