Bonjour,
Alors, j'utilise l'Entity Framework et l'ADO.NET Data Service pour la gestion de ma db.
Je n'arrive pas à insérer un tuple. A chaque coup il me sort une exception.
Voici l'exception :
Voici le schéma simplifié :
Je suis dans un projet Silverlight. Quand je lance l'application j'initialise les champs :
Ensuite toujours dans l'initialisation je lance un handler que j'utilise pour récupérer une variable de session venant d'un projet asp.net lié (enfin c'est pas très important ici) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 this.Database = new JobHuntersExtEntities(new Uri("../WebDataService.svc", UriKind.Relative)); this.Database.SaveChangesDefaultOptions = SaveChangesOptions.Batch; this.Database.MergeOption = MergeOption.AppendOnly;
La valeur de this.Company est bien différente de null et ce à quoi je m'attends.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 this.CompanyId = new Guid(e.Result.ToString()); // Récupération de l'objet de l'entreprise var queryCompany = (from c in this.Database.Companies.Expand("Ads") where c.Id == this.CompanyId select c) as DataServiceQuery<Company>; queryCompany.BeginExecute( (ar) => this.Company = queryCompany.EndExecute(ar).First<Company>(), null);
Quand je clique sur le bouton de mon formulaire pour ajouter le tuple à la db :
L'exception est lancée dans le BeginSaveChanges.
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 private void UiButtonSubmit_Click(object sender, RoutedEventArgs e) { // Date de publication DateTime publication; if (this._uiDatePickerPublication.SelectedDate == null) publication = DateTime.Now; else publication = (DateTime)this._uiDatePickerPublication.SelectedDate; // Ajout de l'annonce Ads ad = new Ads(); ad.Title = this._uiTextBoxTitle.Text; ad.Description = this._uiTextBoxDescription.Text; ad.DateCreation = DateTime.Now; ad.DatePublication = publication; ad.Validity = Int16.Parse(this._uiComboBoxValidity.SelectionBoxItem.ToString()); ad.Salary = Decimal.Parse(this._uiSalary.Text); ad.ContractType = (ContractType)this._uiComboBoxType.SelectedItem; ad.Company = this.Company; this.Database.AddToAds(ad); this.Database.AddLink(ad, "Company", this.Company); this.Database.BeginSaveChanges(SaveChangesOptions.Batch, (asyncResult) => { try { this.Database.EndSaveChanges(asyncResult); MessageBox.Show("Ok"); } catch (Exception ex) { MessageBox.Show(ex.InnerException.Message); } }, null); }
J'ai essayé sans et avec le this.Database.AddLink(ad, "Company", this.Company); mais le résultat est le même, il me balance l'exception.
Est ce que quelqu'un sait comment faire ? Surement un problème avec l'objet this.Company qui n'a pas les bonne référence mais je ne vois pas comment faire autrement.
Yoshio.
Partager