C# net核心-将读取器转换为json

C# net核心-将读取器转换为json,c#,sql-server,json,asp.net-core,C#,Sql Server,Json,Asp.net Core,我正在使用.netcore1.0.1。我想从SQLServer表执行一个存储过程。我可以正确连接到数据库,现在我有以下代码: var con = _context.Database.GetDbConnection(); var cmd = con.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "procedures.sp_Users"; cmd.Parameters.Add(n

我正在使用
.netcore1.0.1
。我想从SQLServer表执行一个存储过程。我可以正确连接到数据库,现在我有以下代码:

var con = _context.Database.GetDbConnection();
var cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "procedures.sp_Users";
cmd.Parameters.Add(new SqlParameter("@Command", SqlDbType.VarChar) { Value = "Login" } );
cmd.Parameters.Add(new SqlParameter("@user", SqlDbType.VarChar) { Value = "admin" } );
cmd.Parameters.Add(new SqlParameter("@pass", SqlDbType.VarChar) { Value = "admin" } );

var reader = cmd.ExecuteReader(); 
因此,我想将这个
读取器
转换为JSON字符串,以便在控制器中返回它

我怎样才能做到呢


我读到我不能使用
数据表
数据集
,因为它们不是跨平台的。

解决方法如下:

var con = _context.Database.GetDbConnection();
var cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "procedures.sp_Users";
cmd.Parameters.Add(new SqlParameter("@Command", SqlDbType.VarChar) { Value = "Login" } );
cmd.Parameters.Add(new SqlParameter("@user", SqlDbType.VarChar) { Value = "admin" } );
cmd.Parameters.Add(new SqlParameter("@pass", SqlDbType.VarChar) { Value = "admin" } );

var retObject = new List<dynamic>();
con.Open();
using (var dataReader = cmd.ExecuteReader())
{
    while (dataReader.Read())
    {
        var dataRow = new ExpandoObject() as IDictionary<string, object>;
        for (var iFiled = 0; iFiled < dataReader.FieldCount; iFiled++)
            dataRow.Add(
                dataReader.GetName(iFiled),
                dataReader.IsDBNull(iFiled) ? null : dataReader[iFiled] // use null instead of {}
            );

        retObject.Add((ExpandoObject)dataRow);
    }
}
return retObject;
var con=\u context.Database.GetDbConnection();
var cmd=con.CreateCommand();
cmd.CommandType=CommandType.storedProcess;
cmd.CommandText=“procedures.sp_Users”;
Add(新的SqlParameter(“@Command”,SqlDbType.VarChar){Value=“Login”});
Add(新的SqlParameter(“@user”,SqlDbType.VarChar){Value=“admin”});
Add(新的SqlParameter(“@pass”,SqlDbType.VarChar){Value=“admin”});
var retObject=新列表();
con.Open();
使用(var dataReader=cmd.ExecuteReader())
{
while(dataReader.Read())
{
var dataRow=new ExpandoObject()作为IDictionary;
对于(变量iFiled=0;iFiled

如以下建议所示,解决方法如下:

var con = _context.Database.GetDbConnection();
var cmd = con.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure; 
cmd.CommandText = "procedures.sp_Users";
cmd.Parameters.Add(new SqlParameter("@Command", SqlDbType.VarChar) { Value = "Login" } );
cmd.Parameters.Add(new SqlParameter("@user", SqlDbType.VarChar) { Value = "admin" } );
cmd.Parameters.Add(new SqlParameter("@pass", SqlDbType.VarChar) { Value = "admin" } );

var retObject = new List<dynamic>();
con.Open();
using (var dataReader = cmd.ExecuteReader())
{
    while (dataReader.Read())
    {
        var dataRow = new ExpandoObject() as IDictionary<string, object>;
        for (var iFiled = 0; iFiled < dataReader.FieldCount; iFiled++)
            dataRow.Add(
                dataReader.GetName(iFiled),
                dataReader.IsDBNull(iFiled) ? null : dataReader[iFiled] // use null instead of {}
            );

        retObject.Add((ExpandoObject)dataRow);
    }
}
return retObject;
var con=\u context.Database.GetDbConnection();
var cmd=con.CreateCommand();
cmd.CommandType=CommandType.storedProcess;
cmd.CommandText=“procedures.sp_Users”;
Add(新的SqlParameter(“@Command”,SqlDbType.VarChar){Value=“Login”});
Add(新的SqlParameter(“@user”,SqlDbType.VarChar){Value=“admin”});
Add(新的SqlParameter(“@pass”,SqlDbType.VarChar){Value=“admin”});
var retObject=新列表();
con.Open();
使用(var dataReader=cmd.ExecuteReader())
{
while(dataReader.Read())
{
var dataRow=new ExpandoObject()作为IDictionary;
对于(变量iFiled=0;iFiled

如下文所述,您可以从中使用
DataReaderConverter
。该转换器直接从任何
IDataReader
.dbc序列化,我今天通过.net内核开始使用mssql。。。虽然你似乎在分享一些有用的东西,但我不得不说。。。对于一个全新的人来说,这是不够的,而这正是他要问的问题。。。详细说明您可以从中使用
DataReaderConverter
。该转换器直接从任何
IDataReader
.dbc序列化,我今天通过.net内核开始使用mssql。。。虽然你似乎在分享一些有用的东西,但我不得不说。。。对于一个全新的人来说,这是不够的,而这正是他要问的问题。。。精心制作的