我有一个存储过程,它在其末尾使用FOR XML语句,并返回一些XML。
我正在使用.NET 4和实体框架,当我执行此存储过程的函数导入并尝试通过实体框架调用它时,它会截断2033个字符的返回值。
我将实体框架换成了传统的ADO.NET方法来调用存在同样问题的存储过程 - 截断为2033个字符 - 当我遇到以下MSDN文章时解释这是设计和使用克服它的“ExecuteXMLReader”方法:
http://support.microsoft.com/kb/310378
所以这现在作为临时修复工作,但我想使用Entity Framework函数导入,所以我没有将ADO.NET代码与EF代码混淆。
有什么方法可以在EF中使用函数导入,返回XML并克服2033字符限制?
问候
bgs264
答案 0 :(得分:10)
我今天遇到了同样的问题。
EF函数调用以2033长的字符串'chunks'返回XML(例如,如果您的XML长度为5000个字符,则会收到3个结果:2033个字符中的2个和934个字符中的1个)
您可以轻松附加这些块以返回XML的完整列表。
答案 1 :(得分:6)
我赞成了Fermin的回答。对Dementic(和其他任何人)的回应,这是一个代码片段。
由此:
using (var db = new MyEntities())
{
IEnumerable<string> results = db.GetSomeXML(ProductCode);
return results.FirstOrDefault();
}
对此:
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();
}