Recentemente ho ricevuto un messaggio di errore da un cliente e non ho avuto la possibilità di risolverlo. Spero che qualcuno possa darmi qualche idea su cosa possa essere sbagliato.Errore durante l'eliminazione di un record tramite Linq2SQL
L'errore sembra abbastanza semplice:
Csla.DataPortalException: DataPortal.Delete riuscita (System.InvalidOperationException: Sequence contiene più di un elemento alla System.Linq.Enumerable.SingleOrDefault [TSource] (fonte IEnumerable`1)
Ecco il mio metodo DataPortal_Delete, che prende il FileId (PK) come parametro.
private void DataPortal_Delete(SingleCriteria<File, Guid> criteria)
{
using (var ctx = ContextManager<Ronin.Data.RoninDataContext>
.GetManager(Database.ApplicationConnection, false))
{
var data = ctx.DataContext.Files
.Single(row => row.FileId == criteria.Value);
ctx.DataContext.FileSources.DeleteAllOnSubmit(data.FileSources);
ctx.DataContext.Files.DeleteOnSubmit(data);
ctx.DataContext.SubmitChanges();
}
}
la prima cosa che ho check è stato quello di vedere se c'era un altro record con lo stesso FileId (pur essendo la prima ry key, questo dovrebbe essere impossibile). Tutti i file ID erano in effetti unici. Ho lanciato l'applicazione connettendomi al database del cliente e ho provato a cancellare il record e ha funzionato senza problemi. Il responsabile IT del sito del cliente ha utilizzato il "Problem Step Recorder" per inviarmi screenshot passo passo delle azioni intraprese dall'utente. Niente di straordinario, e quando ha usato una macchina diversa, è stato in grado di cancellare il record senza errori. Apparentemente ciò accade solo quando l'applicazione viene eseguita in Windows 7.
Detto questo, qualche idea su cosa potrebbe causare questo?
Files.FileId è la chiave primaria su quel tavolo? –
Sei sicuro che l'errore sia generato da questo snippet di codice? L'errore fa riferimento a SingleOrDefault, ma la funzione utilizza Single. – gfrizzle
Le file sorgenti sono nulle? se questi sono oggetti diversi non devi usare un include per averli prima di poterli eliminare? – awright18