/// <summary> /// 根据type和Key查询 /// </summary> /// <param name="type"></param> /// <param name="key"></param> /// <returns></returns> public async Task <WorkflowResource> QueryByKey(string type, string key) { var dbInfo = await StoreInfoHelper.GetHashStoreInfo(_storeInfoResolveService, _hashGroupRepository, _hashGroupName, type, key); if (!dbInfo.TableNames.TryGetValue(HashEntityNames.WorkflowResource, out string tableName)) { var fragment = new TextFragment() { Code = TextCodes.NotFoundKeyInHashNodeKeyInfo, DefaultFormatting = "哈希组{0}中的哈希节点关键信息中找不到键值{1}", ReplaceParameters = new List <object>() { _hashGroupName, HashEntityNames.WorkflowResource } }; throw new UtilityException((int)Errors.NotFoundKeyInHashNodeKeyInfo, fragment); } WorkflowResource result = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, dbInfo.DBConnectionNames.Read, async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (var command = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"SELECT {0} FROM {1} WHERE [type] = @type AND [key] = @key ORDER BY createtime DESC ", StoreHelper.GetWorkflowResourceStoreSelectFields(string.Empty), tableName) }) { var parameter = new SqlParameter("@type", SqlDbType.NVarChar, 256) { Value = type }; command.Parameters.Add(parameter); parameter = new SqlParameter("@key", SqlDbType.NVarChar, 256) { Value = key }; command.Parameters.Add(parameter); await command.PrepareAsync(); SqlDataReader reader = null; await using (reader = await command.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { result = new WorkflowResource(); StoreHelper.SetWorkflowResourceStoreSelectFields(result, reader, string.Empty); } reader.Close(); } } }); return(result); }