public string Insert(Type type, string tableName)
        {
            var key = $"{nameof(Insert)}_{type.FullName}_{tableName}";

            return(_sqlsCache.GetOrAdd(key, () =>
            {
                var tableInfo = _mapper.GetEntityTableInfo(type);
                var paramPrefix = _sqlAdapter.GetParameterPrefix();

                if (string.IsNullOrEmpty(tableName))
                {
                    tableName = tableInfo.TableName;
                }
                tableName = _sqlAdapter.EscapeTableName(tableName);
                var insertCols = tableInfo.Columns.Where(p => !p.IsAutoIncrement).ToList();
                var iColsName = string.Join(", ", insertCols.Select(p => _sqlAdapter.EscapeSqlIdentifier(p.ColumnName)));
                var iColsParams = string.Join(", ", insertCols.Select(p => paramPrefix + p.Property.Name));
                return $"insert into {tableName} ({iColsName}) values ({iColsParams})";
            }));
        }