Domanda

Ho un problema con LINQ to SQL InsertOnSubmit, che sembra funzionare solo per il primo oggetto in una tabella.

Ad esempio con il seguente:

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();

Ho solo ottenere la prima entità ( "Test nota Titolo 1") inserito nel database. Se metto un SubmitChanges dopo ogni InsertOnSubmit, vengono inseriti con successo tutte le righe.

I tipi di cui sopra sono tutti ereditati da una classe nota, quindi sono inseriti nella stessa tabella.

Sono, tuttavia, lo stesso problema con le classi non-derivati.

Ho trascorso molto tempo a guardare questo, ma non riesce a trovare quello che ho fatto di sbagliato. L'intera idea di InsertOnSubmit / SubmitChanges è così che si può fare più modifiche quindi ci deve essere qualcosa di semplice che mi manca.

È stato utile?

Soluzione

Il problema era che avevo Equals sovrascritto nelle mie classi di entità in modo che gli enti con lo stesso ID sono stati considerati lo stesso. Ovviamente, LINQ to SQL sta usando questo ad un certo punto e ottenere il risultato che tutte le nuove entità sono uguali (perché tutti hanno l'id 0).

Grazie Jonathan per essere il mio "Rubber Duck" .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top