async Task <(string DbSchema, string ObjectName, JObject ObjectSchema)> getSchemaAsync(string objectName) { string dbSchema = _defaultDbSchema; int pos = objectName.IndexOf('.'); string key; if (pos > -1) { key = objectName; dbSchema = objectName.Left(pos - 1); objectName = objectName.Substring(pos + 1); } else { key = $"{dbSchema}.{objectName}"; } if (!_schemaCache.TryGetValue(key, out var objectSchema)) { string sch = await _mdb.ExecuteAsync <string>($"select ObjectSchema from SysCat.V_SysSchemas where SchemaName = '{dbSchema}' and " + $"ObjectName = '{objectName}'"); if (sch.IsEmpty()) { //object schema not found in database throw new KeyNotFoundException(Translater.GetTranslate("S031.MetaStack.Core.SysCat.SysCatManager.getSchema.1", key)); } objectSchema = JObject.Parse(sch); lock (objLock) _schemaCache.Add(key, objectSchema); } return(dbSchema, objectName, objectSchema); }