public ExecutorResult Execute()
        {
            return(RunDiagnosis.Watch(() =>
            {
                Check.IfNullOrZero(_model);

                var instance = _model;
                instance.SetAddTime();
                instance.OnChanged();

                if (_options.ModelValidate)
                {
                    instance.CheckPropertyValue();
                }
                var(tableName, aliasName) = instance.GetEntityBaseAliasName();

                var sqlElements = instance.GetChangedProperties().GetSqlElements();
                var insert = _templateBase.CreateInsert(tableName, sqlElements.Fields, sqlElements.InsertPlaceHolders);

                var statementResultBuilder = new StatementResultBuilder();
                statementResultBuilder.AddStatementTemplate(insert);

                foreach (var item in sqlElements.Parameters)
                {
                    statementResultBuilder.AddParameter(item);
                }
                return _resultExecutor.Execute(statementResultBuilder);
            }));
        }
        public ExecutorResult Execute()
        {
            return(RunDiagnosis.Watch(() =>
            {
                if (!FromComponent.AliasNameMappers.Any())
                {
                    throw new ArgumentException("From");
                }

                var mainTable = FromComponent.AliasNameMappers[0];
                var selectStatement = _options.TemplateBase.CreateSelect(ExtractSelectFields(), mainTable.Key, mainTable.Value);
                var statementResultBuilder = Translate(selectStatement, WhereComponent, FromComponent, JoinComponents);
                JoinComponents.Clear();

                if (PaginationComponent != null)
                {
                    if (OrderComponent == null)
                    {
                        throw new Exception("Order");
                    }
                    var(fields, tableName) = ExtractOrderFields();
                    var orderTemplate = _options.TemplateBase.CreateOrderBy(OrderComponent.OrderBy, $@"{tableName}.{fields}");
                    _options.TemplateBase.CreatePagination(PaginationComponent, orderTemplate, statementResultBuilder.StatmentTemplate);
                }
                else if (OrderComponent != null)
                {
                    var(fields, tableName) = ExtractOrderFields();
                    var orderTemplate = _options.TemplateBase.CreateOrderBy(OrderComponent.OrderBy, $@"{tableName}.{fields}");
                    selectStatement.Append(orderTemplate);
                }

                return _resultExecutor.Execute(statementResultBuilder);
            }));
        }
 protected internal override void Rollback()
 {
     if (_dataTransaction != null)
     {
         _dataTransaction.Rollback();
         RunDiagnosis.Info("事务回滚");
     }
 }
 protected internal override void Commit()
 {
     if (_dataTransaction != null)
     {
         _dataTransaction.Commit();
         RunDiagnosis.Info("提交事务");
     }
 }
 protected internal override DbTransaction OpenTransaction()
 {
     if (_dataTransaction == null)
     {
         _dataTransaction = _connection.BeginTransaction(_options.TransactionControl.Level);
         RunDiagnosis.Info("开启事务");
     }
     return(_dataTransaction);
 }
 protected internal override void OpenConnection()
 {
     if (_connection == null)
     {
         _connection = _options.TemplateBase.CreateDbConnection(ConfigReader.GetHostVar(_options.ConnectionStringName));
     }
     if (_connection.State == ConnectionState.Closed)
     {
         RunDiagnosis.Info("开启连接");
         _connection.Open();
     }
 }
        public ExecutorResult Execute()
        {
            return(RunDiagnosis.Watch(() =>
            {
                var instance = Model;
                instance.SetUpdateTime();

                if (_options.ModelValidate)
                {
                    instance.CheckPropertyValue();
                }

                var(tableName, aliasName) = instance.GetEntityBaseAliasName();
                var sqlElements = instance.GetChangedProperties().GetSqlElements();
                var update = _options.TemplateBase.CreateUpdate(tableName, aliasName, sqlElements.UpdatePlaceHolders);
                var statementResultBuilder = Translate(update, WhereComponent);
                instance.Reset();

                return _resultExecutor.Execute(statementResultBuilder);
            }));
        }
        protected internal override void Dispose(Boolean disposing)
        {
            RunDiagnosis.Info($@"释放资源{Environment.NewLine}");
            if (!_disposed)
            {
                if (!disposing)
                {
                    return;
                }

                if (_connection != null)
                {
                    if (_connection.State != ConnectionState.Closed)
                    {
                        _connection.Close();
                    }
                    _connection.Dispose();
                    _connection      = null;
                    _dataTransaction = null;
                }
                _disposed = true;
            }
        }
Exemple #9
0
 /// <summary>
 /// 设置自定义日志记录组件
 /// </summary>
 /// <param name="logger"></param>
 public void SetLogger(ILogger logger = null)
 {
     RunDiagnosis.SetLoggerInstance(logger ?? new DefaultLogger());
 }