Pregunta

Tengo un procedimiento almacenado que utiliza una declaración XML al final de él, y me devuelve un XML.

Estoy usando .NET 4 y el marco de la entidad y cuando realizo una función de importación de este procedimiento almacenado e intento llamarlo a través del marco de entidades que trunca la devolución a 2033 caracteres.

Teré el marco de la entidad para un enfoque tradicional ADO.NET para llamar al procedimiento almacenado que tenía el mismo problema, truncado en 2033 caracteres, que es cuando me encontré con el siguiente artículo de MSDN, explicando esto, y para usarlo. El método "EjecuteXMlReader" para superarlo:

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

Entonces, esto está funcionando ahora como una solución temporal, pero me gustaría usar las importaciones de la función Marco de entidades, por lo que no tengo el código ADO.NET confundido con el código EF.

¿Hay alguna forma en que puedo usar las importaciones de funciones en EF, devolver el XML y superar el límite de caracteres 2033?

Saludos
bgs264

¿Fue útil?

Solución

Hoy corrí al mismo problema.

La llamada de la función EF devuelve el XML en 2033-Long Long 'Chunks' (por ejemplo, si su XML fue de 5000 caracteres, recibiría 3 resultados: 2 de 2033 caracteres y 1 de 934 caracteres)

Puede agregar fácilmente estos trozos para devolver una lista completa del XML.

Otros consejos

Me oprimí la respuesta de Fermin.Respuesta a la demencia (y cualquier otra persona), aquí hay un fragmento de código.

de esto:

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

a esto:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top