C# 在web api中执行存储过程时获取空值,但在MSSQL中获取结果
我有一个存储过程,它在MSSql服务器中为我提供这个输出 所以我创建了一个类来捕获这个输出,如下所示:C# 在web api中执行存储过程时获取空值,但在MSSQL中获取结果,c#,sql-server,C#,Sql Server,我有一个存储过程,它在MSSql服务器中为我提供这个输出 所以我创建了一个类来捕获这个输出,如下所示: public class OwnerInfo { public string UnitName { get; set; } public string UnitOwner { get; set; } } public class FirstInfo { public string TType { get; set; } public string Transa
public class OwnerInfo
{
public string UnitName { get; set; }
public string UnitOwner { get; set; }
}
public class FirstInfo
{
public string TType { get; set; }
public string TransactionType { get; set; }
public string Period_Covered { get; set; }
public double? BillAmount { get; set; }
public double? PaymentAmount { get; set; }
public double? Balance { get; set; }
}
public class SecondInfo
{
public string TType { get; set; }
public string TransactionType { get; set; }
public string Period { get; set; }
public double? BillAmount { get; set; }
public double? PaymentAmount { get; set; }
public double? Balance { get; set; }
}
public class ThirdInfo
{
public string TType { get; set; }
public string TransactionType { get; set; }
public string Period { get; set; }
public double? PaymentAmount { get; set; }
}
public class FourthInfo
{
public string TType { get; set; }
public string Particulars { get; set; }
public string PaymentDate { get; set; }
public double? PaymentAmount { get; set; }
public string ORNumber { get; set; }
}
public class DisplaySoa
{
public OwnerInfo OwnerInfo { get; set; }
public List<FirstInfo> FirstInfo { get; set; }
public List<SecondInfo> SecondInfo { get; set; }
public List<ThirdInfo> ThirdInfo { get; set; }
public List<FourthInfo> FourthInfo { get; set; }
}
public class DisplaySoaParameter
{
public int UnitID { get; set; }
public int Month { get; set; }
public int Year { get; set; }
}
公共类所有者信息
{
公共字符串UnitName{get;set;}
公共字符串UnitOwner{get;set;}
}
公共类第一信息
{
公共字符串类型{get;set;}
公共字符串事务类型{get;set;}
公共字符串周期{get;set;}
公共双?BillAmount{get;set;}
公共双?支付金额{get;set;}
公共双平衡{get;set;}
}
公共类第二信息
{
公共字符串类型{get;set;}
公共字符串事务类型{get;set;}
公共字符串周期{get;set;}
公共双?BillAmount{get;set;}
公共双?支付金额{get;set;}
公共双平衡{get;set;}
}
公共类第三信息
{
公共字符串类型{get;set;}
公共字符串事务类型{get;set;}
公共字符串周期{get;set;}
公共双?支付金额{get;set;}
}
公共类第四信息
{
公共字符串类型{get;set;}
公共字符串详细信息{get;set;}
公共字符串PaymentDate{get;set;}
公共双?支付金额{get;set;}
公共字符串或编号{get;set;}
}
公共类显示SOA
{
公共所有者信息所有者信息{get;set;}
公共列表第一信息{get;set;}
公共列表第二信息{get;set;}
公共列表第三信息{get;set;}
公共列表FourthInfo{get;set;}
}
公共类显示SOAPParameter
{
public int UnitID{get;set;}
公共整数月{get;set;}
公共整数年{get;set;}
}
我从数据库中获取它的方式是在我的控制器中,我调用存储过程如下:
const string query = "[dbo].[DISPLAY_SOA_V4] @UnitID, @Month, @Year";
using(var db = new ApplicationDbContext())
{
try
{
//const string query = "[dbo].[DUES_AUTO_PAYMENT] @PaymentAmount @PaymentTypeID @ORNumber @UnitID @CurrentDateTime";
object[] parameter =
{
new SqlParameter
{
ParameterName = "@UnitID",
Value = model.UnitID,
Direction = ParameterDirection.Input,
SqlDbType = SqlDbType.Int
},
new SqlParameter
{
ParameterName = "@Month",
Value = model.Month,
Direction = ParameterDirection.Input,
SqlDbType = SqlDbType.Int
},
new SqlParameter
{
ParameterName = "@Year",
Value = model.Year,
Direction = ParameterDirection.Input,
SqlDbType = SqlDbType.Int
}
};
var x = db.Database.SqlQuery<DisplaySoa>(query, parameter).ToList();
return x;
}
catch (Exception ed)
{
return null;
}
}
const string query=“[dbo].[DISPLAY\u SOA\u V4]@UnitID、@Month、@Year”;
使用(var db=new ApplicationDbContext())
{
尝试
{
//const string query=“[dbo].[DUES\u AUTO\u PAYMENT]@PaymentAmount@PaymentTypeID@ORNumber@UnitID@CurrentDateTime”;
对象[]参数=
{
新的SqlParameter
{
ParameterName=“@UnitID”,
值=model.UnitID,
方向=参数方向。输入,
SqlDbType=SqlDbType.Int
},
新的SqlParameter
{
ParameterName=“@Month”,
值=型号。月份,
方向=参数方向。输入,
SqlDbType=SqlDbType.Int
},
新的SqlParameter
{
ParameterName=“@Year”,
值=车型年份,
方向=参数方向。输入,
SqlDbType=SqlDbType.Int
}
};
var x=db.Database.SqlQuery(查询,参数).ToList();
返回x;
}
捕获(例外编辑)
{
返回null;
}
}
但在我的“x”值中,我得到null,如下所示:
当我使用.FirstOrDefault()时就是这个图像。但是如果我使用.ToList(),我会得到一个1的计数,但是没有插入任何内容。你能帮我一下吗?多谢各位 您的sp正在返回多个结果集
var x = db.Database.SqlQuery<DisplaySoa>(query, parameter).ToList();
var x=db.Database.SqlQuery(查询,参数).ToList();
从这一点上,你无法处理
请阅读这篇文章了解如何做到这一点。请看这里:如果您能在问题中包含存储过程的定义,那将是非常棒的。对于这个答案,您会感到惊讶。我仍然有一些类似这样的问题:“访问数据库时出错。这通常意味着与数据库的连接失败。检查连接字符串是否正确,以及是否正在使用适当的DbContext构造函数来指定它或在应用程序的配置文件中查找它。有关DbContext和连接的信息,请参见。有关失败的详细信息,请参见内部异常。但我想我应该问另一个问题。