Bonjour,
je travaille actuellement sur un logiciel qui fonctionne avec une base de données locale (compactSQL).
J'utilise une DataGrid pour afficher certaines données de ma table "BT". Pour cela j'ai fais une List<BT> appelée BTs et j'ai ensuite mis le dataContext de ma DataGrid dessus.
La liste est ensuite remplie à l'aide de la base de données ce qui met à jour la DataGrid. Un BT possède aussi une liste de Valeur. Dans le logiciel (ici le même UserControl), il est aussi possible d'ajouter une Valeur au BT, c'est là que le problème arrive.
Lorsque j'essai d'ajouter une valeur au BT, j'ai le message d'erreur suivant au moment du bdd.submitChanges() :
De ce que je comprends (et de ce que j'ai lu) c'est que Linq To SQL stocke pas mal de chose dans son cache, et la list<BT> doit être reliée à ce cache...Impossible d'ajouter une entité avec une clé déjà en cours d'utilisation
Mon but est donc de détacher cette list (si j'ai bien compris le problème).
Pour remplir ma liste, j'utilise une méthode chargerBT() qui renvoie une ObservableCollection<BT>, voici le code de cette fonction :
Au début je faisais simplement "return res;" mais j'avais le message d'erreur, avec cette version le message apparaît moins souvent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public ObservableCollection<BT> chargerBT() { ObservableCollection<BT> res = new ObservableCollection<BT>((from BT in bdd.BT orderby BT.Nom_BT select BT).ToArray().ToList()); ObservableCollection<BT> tmp = new ObservableCollection<BT>(res); return tmp; }
Avez-vous une solution à mon problème ?
Merci d'avance
EDIT : petite précision, je travaille en C#
Partager