[英]How to get data from SQL Server using a stored procedure
我无法使用存储过程从数据库中获取值。 请看下面的代码:
class LaneModel
{
public string Name { get; set; }
public int Lane { get; set; }
public int ManualCount { get; set; }
public int ReadCount { get; set; }
public int TotalTransaction { get; set; }
public string DateTime { get; set; } = System.DateTime.Now.ToString("yyyy/MM/dd");
}
从数据库中获取数据
public async Task<List<LaneModel>> GetLaneData()
{
try
{
var db = new ApplicationDbContext();
db.Database.Initialize(true);
using (var cnxn = db.Database.Connection)
{
cnxn.Open();
var cmd = cnxn.CreateCommand();
var sp = @"GetManualTransactions";
cmd.CommandText = sp;
cmd.CommandType = CommandType.StoredProcedure;
var dtFrom = cmd.CreateParameter();
dtFrom.ParameterName = "@DateFrom";
dtFrom.DbType = DbType.Date;
dtFrom.Direction = ParameterDirection.Input;
dtFrom.Value = DateTime.Now.ToString("MM/dd/yyyy");
cmd.Parameters.Add(dtFrom);
using (var reader = await cmd.ExecuteReaderAsync())
{
try
{
var result = ((IObjectContextAdapter) db)
.ObjectContext
.Translate<LaneModel>(reader)
.ToList();
return result; =========================> I always get 0
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
SQL中的存储过程
@DateFrom AS DATE
if OBJECT_ID('tempdb..#etc_correlated') IS NOT NULL
DROP TABLE #etc_correlated
SELECT
t2.Name,
t2.Lane,
SUM(IIF(READ_STATUS = 'M', 1, 0)) As ManualCount,
SUM(IIF(READ_STATUS = 'R', 1, 0)) As ReadCount
into #etc_correlated
FROM [HQ_JOINT_DB_TPLEX].DBO.ETC_CORRELATED AS t1
INNER JOIN [Gen_Report].dbo.Plaza AS t2
ON t1.EXIT_PLAZA = t2.Code
AND t1.EXIT_LANE = t2.Lane
AND CONVERT(DATE, EXIT_TRXN_DTIME) = @DateFrom
GROUP BY t2.Name, t2.Lane, READ_STATUS
select Name,
Lane,
sum(ManualCount) ManualCount,
sum(ReadCount) ReadCount,
sum(ManualCount) + sum(ReadCount) TotalTransaction
from #etc_correlated
group by Name,Lane
但是如果我在程序本身中提供日期('02/10/2020'),我就会得到结果。 我怎样才能使这项工作?
您是否尝试过使用适当的日期对象?
dtFrom.ParameterName = "@DateFrom";
dtFrom.DbType = DbType.Date;
dtFrom.Direction = ParameterDirection.Input;
dtFrom.Value = DateTime.Now.Date;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.