Exemple #1
0
 private TestConsole(IDbEngine engine, ILoggerFactory loggerFactory)
 {
     _engine = engine;
     _logger = new LoggerHelper(loggerFactory.GetLogger(typeof(TestConsole)),
         Assembly.GetExecutingAssembly(),
         "StringConstants");
 }
Exemple #2
0
        public string GenerateCode(IDbEngine engine, SettingInfo setting, string sql)
        {
            List<ColumnInfo> columns = new List<ColumnInfo>();
            engine.Execute(sql).ToReader(reader =>
            {
                reader.Read();
                for(int i = 0; i < reader.FieldCount; i++)
                {
                    var column = new ColumnInfo()
                    {
                        Name = reader.GetName(i),
                    };

                    column.SetType(reader.GetFieldType(i));
                    columns.Add(column);
                }
            });

            var code = this.GenerateCode(columns, setting, "自定义语句");
            code = "/*********** SQL **********\r\n\r\n"
                     + sql
                     + "\r\n\r\n********** SQL ***********/\r\n\r\n"
                     + code;
            return code;
        }
Exemple #3
0
 private void InsertCountTest(IDbEngine engine)
 {
     Assert.Equal(10000
              , engine
                  .Execute("SELECT COUNT(*) FROM TestTable")
                  .ToScalar<int>()
              );
 }
Exemple #4
0
 private void InsertPerformanceTest(IDbEngine engine)
 {
     for(int i = 0; i < 10000; i++)
     {
         engine.Execute("INSERT INTO TestTable(UserName) VALUES (@username)", "@username", "user" + i)
             .ToNonQuery();
     }
 }
Exemple #5
0
 /// <summary>
 /// 解析参数集合,并用 AND 符拼接 WHERE 语句。
 /// </summary>
 /// <param name="engine">数据源查询与交互引擎的实例。</param>
 /// <param name="ps">参数集合。</param>
 /// <param name="binary">二元运算符。</param>
 public static WhereParameters Parse(IDbEngine engine, ExecuteParameterCollection ps = null, string binary = "AND")
     => new WhereParameters(engine.CreateWhere(ps, binary), ps);
Exemple #6
0
 /// <summary>
 /// 解析匿名对象参数集合,并用 AND 符拼接 WHERE 语句。
 /// </summary>
 /// <param name="engine">数据源查询与交互引擎的实例。</param>
 /// <param name="objectInstance">匿名参数集合实例。</param>
 /// <param name="binary">二元运算符。</param>
 public static WhereParameters Parse(IDbEngine engine, object objectInstance, string binary = "AND")
     => Parse(engine, new ExecuteParameterCollection(objectInstance), binary);
Exemple #7
0
 /// <summary>
 /// 表示 <see cref="Executed"/> 事件的处理方法。
 /// </summary>
 /// <param name="engine">数据源查询与交互引擎的实例。</param>
 /// <param name="type">执行的类型。</param>
 /// <param name="result">操作的返回值。</param>
 /// <param name="command">执行的命令。</param>
 /// <param name="dbCommand">执行的 <see cref="DbCommand"/>。</param>
 internal protected virtual void OnExecuted(IDbEngine engine, ExecuteType type, ExecuteCommand command, DbCommand dbCommand, object result)
     => this.Executed?.Invoke(engine, command.GetEventArgs(type, dbCommand, result));
Exemple #8
0
 /// <summary>
 /// 表示 <see cref="Executing"/> 事件的处理方法。
 /// </summary>
 /// <param name="engine">数据源查询与交互引擎的实例。</param>
 /// <param name="type">执行的类型。</param>
 /// <param name="command">执行的命令。</param>
 /// <param name="dbCommand">执行的 <see cref="DbCommand"/>。</param>
 internal protected virtual void OnExecuting(IDbEngine engine, ExecuteType type, ExecuteCommand command, DbCommand dbCommand)
     => this.Executing?.Invoke(engine, command.GetEventArgs(type, dbCommand, null));
Exemple #9
0
        public string GenerateCode(IDbEngine engine, SettingInfo setting)
        {
            var columnInfos = engine.Execute(@"
SELECT
a.Name,
t.name as DbType,
a.max_length as MaxLength,
IsPrimaryKey=case when exists(SELECT 1 FROM sys.objects where type='PK' and name in (
SELECT name FROM sys.indexes WHERE index_id in(
SELECT indid FROM sys.sysindexkeys WHERE id = a.object_id AND colid=a.column_id
))) then 1 else 0 end,
IsNullable=a.is_nullable,
Comments=isnull(g.[value],'')
FROM sys.columns a
inner join sys.objects d on a.object_id=d.object_id and d.name<>'dtproperties'
inner join sys.types t on a.user_type_id=t.user_type_id
left join sys.extended_properties g on a.object_id=g.major_id and a.column_id=g.minor_id
WHERE d.Name=@tableName
ORDER BY a.column_id", "@tableName", this.Name)
                                                               .ToEntities<ColumnInfo>();
            //var table = engine.Execute("SELECT * FROM " + this.Name + " WHERE 1=2").ToTable();
            //var columns = table.Columns;
            //foreach(var item in columnInfos)
            //{
            //    item.SetType(columns[item.Name].DataType);
            //}
            return GenerateCode(columnInfos, setting, this.Type == ObjectType.Table ? "数据库表对象" : "数据库视图对象");

        }
Exemple #10
0
 internal SqlBuilder(IDbEngine engine)
 {
     this._engine = engine;
 }