Question

J'ai un problème avec LINQ to SQL InsertOnSubmit, qui semble ne fonctionner que pour le premier élément dans un tableau.

Par exemple, avec ce qui suit:

var noteDetail1 = new NoteDetail() { Title = "Test Note Title 1", NoteText = "Test note" };
var waiverDetail1 = new WaiverDetail() { Title = "Test Waiver Title 1", NoteText = "Test waiver details text" };
var riskDetail1 = new RiskDetail() { Title = "Test Risk Title 1", NoteText = "Test risk details text" };
context.Notes.InsertOnSubmit(noteDetail1);
context.Notes.InsertOnSubmit(riskDetail1);
context.Notes.InsertOnSubmit(waiverDetail1);
context.SubmitChanges();

je reçois que la première entité ( « Test Note Titre 1 ») inséré dans la base de données. Si je place un SubmitChanges après chaque InsertOnSubmit, toutes les lignes sont insérés avec succès.

Les types ci-dessus sont tous hérité d'une classe de note, donc sont insérés dans la même table.

Je suis, cependant, connaît le même problème avec les classes non dérivées.

J'ai passé beaucoup de temps à regarder cela, mais ne peut pas trouver ce que je l'ai fait mal. L'idée de InsertOnSubmit / SubmitChanges est que vous pouvez faire plusieurs changements il doit y avoir quelque chose de simple que je suis absent.

Était-ce utile?

La solution

Le problème était que j'avais dans mes Equals outrepassée classes d'entités afin que les entités ayant le même identifiant ont été considérés comme les mêmes. De toute évidence, LINQ to SQL utilise ce à un moment et d'obtenir le résultat que toutes les nouvelles entités sont égaux (parce qu'ils ont tous le Id de 0).

Merci Jonathan pour être mon "Rubber Duck" .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top