ISessionInfoService, GetInfo, DsQueryTimeout օգտագործման օրինակներ։

Օրինակում օգտագործվում են ընթացիկ օգտագործողի սեսսիայի տվյալները։

Օրինակում ստեղծվում է SqlCommand դասի օբյեկտ՝ IDBService դասի CreateCommand մեթոդի միջոցով` Sql հարցումներ կատարելու համար։

Որպես հարցման կատարման առավելագույն ժամանակ դրվում է սեսսիայի QueryTimeout հատկության արժեքը և սեսսիայի տվյալների որոշ մասը գրանցվում է տվյալների պահոցում։

public async Task WriteLog(string operationCode, string comment)
{
    var sessionInfo = this.sessionInfoService.GetInfo();

    var userId = sessionInfo.Suid;                      //ընթացիկ օգտագործողի կոդը
    var userComputerName = sessionInfo.ComputerName;    //ընթացիկ օգտագործողի համակարգչի անունը
    var currentDate = sessionInfo.WkDate;               //ընթացիկ ամսաթիվը ընթացիկ օգտագործողի դրույթներից

    if (!sessionInfo.IsAdmin)
    {
        throw new Exception("Լոգ գրանցելու իրավասություն չունեք։".ToArmenianANSI());
    }

    using var cmd = this.DbService.CreateCommand();
    cmd.CommandTimeout = sessionInfo.QueryTimeout;    //հարցման կատարման մաքսիմալ ժամանակը ընթացիկ օգտագործողի դրույթներից

    cmd.CommandText = """
        insert into APPLOG (fDATE, fSUID, fCOMMENT, fOPERCODE, fCOMPNAME, fAPICLIENTID)
                    values (@DATE, @SUID, @COMMENT, @OPERCODE, @COMPUTERNAME, @APICLIENTID)
        """;

    cmd.Parameters.Add("@SUID", SqlDbType.SmallInt).Value = userId;
    cmd.Parameters.Add("@COMPUTERNAME", SqlDbType.VarChar, APPLOG.fCOMPNAMELength).Value = userComputerName;
    cmd.Parameters.Add("@DATE", SqlDbType.DateTime).Value = currentDate;
    cmd.Parameters.Add("@APICLIENTID", SqlDbType.SmallInt).Value = sessionInfo.ApiClientId;
    cmd.Parameters.Add("@COMMENT", SqlDbType.VarChar, APPLOG.fCOMMENTLength).Value = comment;
    cmd.Parameters.Add("@OPERCODE", SqlDbType.Char, APPLOG.fOPERCODELength).Value = operationCode;
            
    await cmd.ExecuteNonQueryAsync();
}