Domanda

Ho una stored procedure che utilizza una dichiarazione XML alla fine di esso, e mi restituisce un po 'di XML.

Sto usando .NET 4 e il framework Entity e quando faccio una funzione importazione di questa stored procedure e prova a chiamarlo attraverso il framework dell'entità che tronca il ritorno a 2033 caratteri.

Ho scambiato il framework dell'entità per un approccio ADO.NET tradizionale per chiamare la stored procedure che ha avuto lo stesso problema - troncato a 2033 caratteri - che è quando mi sono imbattuto nel seguente articolo MSDN che spiega questo è per design e da usare Il metodo "ExesexmlReader" per superarlo:

http://supporter.microsoft.com/kb/310378

Quindi questo funziona ora come una correzione temporanea, ma vorrei utilizzare le importazioni delle funzioni del framework dell'entità, quindi non ho il codice ADO.NET mescolato con il codice EF.

C'è un modo in cui posso utilizzare le importazioni delle funzioni in EF, restituire XML e superare il limite di caratteri 2033?

Saluti
BGS264

È stato utile?

Soluzione

Ho corso oggi lo stesso problema.

La chiamata della funzione EF restituisce l'XML in Th.ML in 2033-Long String 'Chunks' (ad es. Se il tuo XML era 5000 caratteri a lungo, riceverai 3 risultati: 2 di 2033 caratteri e 1 di 934 caratteri)

Puoi facilmente aggiungere questi blocchi per restituire un elenco completo dell'XML.

Altri suggerimenti

I haw vogato la risposta di Fermin.Risposta a dementia (e chiunque altro), ecco un frammento di codice.

Da questo:

using (var db = new MyEntities())
{
    IEnumerable<string> results = db.GetSomeXML(ProductCode);
    return results.FirstOrDefault();           
}
.

A questo:

using System.Text;      //For the StringBuilder

using (var db = new MyEntities())
{
    StringBuilder retval = new StringBuilder();

    IEnumerable<string> results = db.GetSomeXML(ProductCode);
    foreach (var result in results)
        retval.Append(result);

    return retval.ToString();           
}
.

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