我正在使用实体框架代码-第一种方法。我想从DbContext类调用一个存储过程,并获得XML。
存储过程( Server):
CREATE PROCEDURE xml_test
AS
BEGIN
DECLARE @xml1 xml
SET @xml1 = (SELECT * from Product FOR XML RAW)
SELECT @xml1 AS my_xml
ENDLINQ实体框架:
using (DBContext db = new DBContext())
{
var ProductList = await db.Database.ExecuteSqlCommandAsync("exec xml_test");
}在这里,ProductList列表返回-1。
我希望获得由存储过程返回的xml输出。
注意:我也尝试过这样的方法:ExecuteSqlCommand,SqlQuery,但没有帮助。
发布于 2016-12-26 12:08:50
我认为你可以像这样使用SQLQuery:
using (var dbcontext = new DBContext())
{
//Reading stored procedure results as List<string>
var r = dbcontext.Database.SqlQuery<string>("EXEC xml_test").ToList(); //Note: EXEC is optional
//Joining strings to one string that causes in resulting long strings
var xmlString = string.Join("", r);
//Now you can load your string to a XmlDocument
var xml = new XmlDocument();
//Note: You need to add a root element to your result
xml.LoadXml($"<root>{xmlString}</root>");
}注意:要从存储过程中获取记录,需要在
SET NOCOUNT ON;之后添加BEGIN;)。
CREATE PROCEDURE [dbo].[xml_test]
AS
BEGIN
SET NOCOUNT ON;
SELECT * from dbo.AspNetUsers FOR XML RAW;
ENDhttps://stackoverflow.com/questions/41277079
复制相似问题