Не удалось получить данные с сервера SQL с помощью хранимой процедуры - PullRequest
2 голосов
/ 10 февраля 2020

Я не могу получить значения из базы данных, используя хранимую процедуру. Пожалуйста, смотрите код ниже:

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;
    }
}

Хранить Poccedure в 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 ') в самом sp, я получу результаты. Пожалуйста, помогите мне сделать эту работу. Спасибо.

1 Ответ

2 голосов
/ 10 февраля 2020

Вы пробовали с правильным объектом даты?

    dtFrom.ParameterName = "@DateFrom";        
    dtFrom.DbType = DbType.Date;
    dtFrom.Direction = ParameterDirection.Input;
    dtFrom.Value = DateTime.Now.Date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...