Ho letto molti post relativi a questo problema, ma non sono riuscito a trovare una risposta. Sto provando a caricare una grande quantità di dati da Excel in SQL Server. Migliaia di record. E ottengo questa eccezione:Eccezione EF: i dati stringa o binari verrebbero troncati. La dichiarazione è stata chiusa.?
Stringa o dati binari sarebbero troncati. La dichiarazione è stata terminata.
Ovviamente alcuni valori superano le dimensioni del campo nel database. L'errore proviene da SQL Server AFIK.
La mia domanda - Come avrei potuto sapere che cosa registrare e quale valore di campo causato questo?
Non ci sono dettagli specifici nell'eccezione EF, tranne quella menzionata.
Qualsiasi aiuto è apprezzato.
Alcuni hanno chiesto per il frammento di codice, ma in realtà è molto semplice, il problema non è con il codice:
// employees is a List<Employee> collection loaded from Excel
using (var context = new Entities())
{
employees.ForEach(e => context.Employee.AddObject(e));
context.SaveChanges();
}
anche l'approccio suggerito di utilizzare DbEntityValidationException (che è disponibile solo in Entity Framework 5.0) non funziona, il blocco cattura non ha rilevato l'eccezione.
try
{
ImportData();
}
catch (DbEntityValidationException ex)
{
foreach (var item in ex.EntityValidationErrors)
{
//...
}
}
L'unica soluzione che ho trovato finora è quello di utilizzare SQL Server Profiler, e definire i seguenti eventi da monitorare:
Ora riesco a vedere l'email è troppo lunga
Eseguire il debug di record finché non si trova l'autore del reato e controllare ogni campo del record rispetto alle colonne db? – yoozer8
Si prega di fornire ulteriori informazioni per esempio esempio di codice, Struttura dati e DataType dei campi che si sta tentando di importare. Questo renderà più facile a mio parere prestare una sorta di direzione – MethodMan
Non è possibile in alcun modo eseguire il debug di record usando EF. Viene eseguito come un'unica transazione. – monstro