/// <summary>
        /// 获取表明
        /// </summary>
        /// <param name="type">实体类型<see cref="Type"/></param>
        /// <returns></returns>
        internal static string GetTableName(this Type type, ISqlParser sqlParser)
        {
            string name;

            if (TypeTableName.TryGetValue(type.TypeHandle, out name))
            {
                return(name);
            }

            //NOTE: This as dynamic trick should be able to handle both our own Table-attribute as well as the one in EntityFramework
            var tableAttr = type.GetTypeInfo().GetCustomAttributes(false).SingleOrDefault(attr => attr.GetType().Name == "TableAttribute") as dynamic;

            if (tableAttr != null)
            {
                name = $"{sqlParser.ElementLeftPrefix}{tableAttr.Name}{sqlParser.ElementRightPrefix}";
            }
            else
            {
                name = $"{sqlParser.ElementLeftPrefix}{type.Name}s{sqlParser.ElementRightPrefix}";
                if (type.GetTypeInfo().IsInterface&& name.StartsWith("I"))
                {
                    name = $"{sqlParser.ElementRightPrefix}{name.Substring(1)}{sqlParser.ElementRightPrefix}";
                }
            }

            TypeTableName[type.TypeHandle] = name;
            return(name);
        }
示例#2
0
 public static SqlExpression ParseDefaultValue(string expr, ISqlDialect dialect)
 {
     if (expr == null)
     {
         return(null);
     }
     if (expr.Trim() == "")
     {
         return(null);
     }
     if (dialect == null)
     {
         dialect = new GenericDialect();
     }
     try
     {
         ISqlParser par = dialect.CreateParser(expr);
         par.AllowOperators = false;
         par.AllowSpecialConstantReplacement = true;
         var res = par.ParseExpression();
         if (res != null && res.XmlPersistent)
         {
             return(res);
         }
     }
     catch { }
     return(new SpecificSqlExpression(expr, dialect != null ? dialect.DialectName : null, SymbolPosition.WholeString(expr)));
 }
示例#3
0
        internal SqlBuilder(ISqlParser dbSqlParser)
        {
            this.DbParams = new Dictionary <string, object>();

            this.SelectFields      = new List <string>();
            this.SelectFieldsAlias = new List <string>();
            this._dbSqlParser      = dbSqlParser;
        }
示例#4
0
        public SqlDocumentRepository(ISqlParser parser, IStatementValidator validator, IDatabaseModel databaseModel, string statementText = null)
        {
            _parser    = parser ?? throw new ArgumentNullException(nameof(parser));
            _validator = validator ?? throw new ArgumentNullException(nameof(validator));

            _databaseModel = databaseModel;

            if (!String.IsNullOrEmpty(statementText))
            {
                UpdateStatements(statementText);
            }
        }
示例#5
0
 public KoraliumTransportService(
     SqlExecutor sqlExecutor,
     IServiceProvider serviceProvider,
     MetadataStore metadataStore,
     ISqlParser sqlParser,
     ILogger <KoraliumTransportService> logger)
 {
     _sqlExecutor     = sqlExecutor;
     _serviceProvider = serviceProvider;
     _metadataStore   = metadataStore;
     _sqlParser       = sqlParser;
     _logger          = logger;
 }
示例#6
0
 public SqlExecutor(
     ISqlParser sqlParser,
     TablesMetadata tablesMetadata,
     IQueryExecutor queryExecutor,
     ISearchExpressionProvider searchExpressionProvider,
     IOperationsProvider operationsProvider)
 {
     _sqlParser                = sqlParser;
     _tablesMetadata           = tablesMetadata;
     _queryExecutor            = queryExecutor;
     _stageConverter           = new StageConverter();
     _searchExpressionProvider = searchExpressionProvider;
     _operationsProvider       = operationsProvider;
 }
示例#7
0
        public static SqlParseResult Parse(this ISqlParser parser, Stream inputStream, Encoding encoding)
        {
            if (inputStream == null)
            {
                throw new ArgumentNullException("inputStream");
            }
            if (!inputStream.CanRead)
            {
                throw new ArgumentException("The input stream cannot be read.", "inputStream");
            }

            using (var reader = new StreamReader(inputStream, encoding)) {
                var text = reader.ReadToEnd();
                return(parser.Parse(text));
            }
        }
示例#8
0
        private ParseASTNode TowPhaseParse()
        {
            ISqlParser sqlParser = SqlParserFactory.NewInstance(_dataSourceName, _sql);

            try
            {
                ((Antlr4.Runtime.Parser)sqlParser).ErrorHandler = new BailErrorStrategy();
                ((Antlr4.Runtime.Parser)sqlParser).Interpreter.PredictionMode = PredictionMode.LL;
                return((ParseASTNode)sqlParser.Parse());
            }
            catch (ParseCanceledException ex)
            {
                ((Antlr4.Runtime.Parser)sqlParser).Reset();
                ((Antlr4.Runtime.Parser)sqlParser).ErrorHandler = new DefaultErrorStrategy();
                ((Antlr4.Runtime.Parser)sqlParser).Interpreter.PredictionMode = PredictionMode.LL;
                return((ParseASTNode)sqlParser.Parse());
            }
        }
示例#9
0
 public void Reformat()
 {
     if (EditPropertiesForm.Run(ReformatProps, true))
     {
         string     sql    = m_editor.Text;
         ISqlParser parser = m_dialect.CreateParser(sql);
         try
         {
             var code = parser.ParseCommand();
             if (!parser.Tokernizer.IsEof)
             {
                 throw new ParseError("DAE-00294 EOF expected");
             }
             string res = m_dialect.GenerateScript(code.GenerateSql, ReformatProps);
             m_editor.SetCodeText(res, true);
         }
         catch (Exception err)
         {
             Errors.Report(err);
         }
     }
 }
示例#10
0
 internal SqlQueryable(ISqlParser dbSqlParser)
 {
     _mainTableName   = typeof(T).GetTableName(dbSqlParser);
     this._sqlBuilder = new SqlBuilder(dbSqlParser);
 }
示例#11
0
 public static SqlParseResult Parse(this ISqlParser parser, Stream inputStream)
 {
     return(Parse(parser, inputStream, Encoding.Unicode));
 }
示例#12
0
 public SqlParserTest()
 {
     _parser = new MysqlParser();
 }
 public SqlBatchExecutor(ISqlParser parser, ISqlExecutor sqlExecutor)
 {
     _parser      = parser;
     _sqlExecutor = sqlExecutor;
 }
 public SqlFileExecutor(ISqlParser parser, ISqlExecutor sqlExecutor)
 {
     _parser      = parser;
     _sqlExecutor = sqlExecutor;
 }
示例#15
0
 public SelectOperation(IDbProvider provider, ISqlParser parser)
 {
     DbProvider    = provider;
     _selectParser = parser;
 }
示例#16
0
 public SqlSecurityStatementTests()
 {
     context = ContextUtil.NewParseContext();
     parser  = context.Scope.Resolve <ISqlParser>();
 }
示例#17
0
 protected SqlStatement(ISqlParser parser = null)
 {
     _parser = parser ?? new SqlParser();
 }
示例#18
0
 public SqlParsing()
 {
     _sqlParser = new AntlrSqlParser();
 }
示例#19
0
 public void SetParser(ISqlParser parser)
 {
     _parser = parser;
 }
 public SqlEmbeddedResourceExecutor(ISqlParser parser, ISqlExecutor sqlExecutor)
 {
     _parser      = parser;
     _sqlExecutor = sqlExecutor;
 }