Пример #1
0
        public async Task <IActionResult> OnPost(string userName, [FromServices] ISender sender)
        {
            var emailData = DataUpdateBehavior <EmailAddress> .DeleteValue();

            if (!string.IsNullOrEmpty(Email))
            {
                emailData = DataUpdateBehavior <EmailAddress> .CreateOrUpdateValue(new(Email) );
            }

            var cmd = new UpdateAppUserDetailsCommand(
                new(userName),
                new(DisplayName ?? string.Empty),
                emailData);

            await sender.Send(cmd);

            return(RedirectToPage("User", new { userName = userName }));
        }
        public UpdateAppUserDetailsCommand(UserName userName, UserDisplayName?displayName, DataUpdateBehavior <EmailAddress> emailAddress)
        {
            UserName     = Guard.NotNull(userName, nameof(userName));
            EmailAddress = Guard.NotNull(emailAddress, nameof(emailAddress));

            DisplayName = displayName;
        }
Пример #3
0
        /// <summary>
        /// 根据更新模式,执行多个sql
        /// </summary>
        /// <param name="updateBehavior">执行模式</param>
        /// <param name="scriptCollection">带参数的数据库脚本执行对象集合</param>
        public void ExecuteMultiSql(DataUpdateBehavior updateBehavior, List<SqlParamterItem> scriptCollection)
        {
            switch (updateBehavior)
            {
                case DataUpdateBehavior.Standard:
                    foreach (var sql in scriptCollection)
                    {
                        ExecuteSql(sql);
                    }
                    break;
                case DataUpdateBehavior.Continue:
                    Exception ex = null;
                    foreach (var sql in scriptCollection)
                        try
                        {
                            ExecuteSql(sql);
                        }
                        catch (Exception execEx)
                        {
                            ex = execEx;
                        }
                    if (ex != null)
                        throw ex;
                    break;
                case DataUpdateBehavior.Transactional:
                    using (var conn = CreateConnection())
                    {
                        conn.Open();
                        DbTransaction dbTran = null;
                        try
                        {
                            dbTran = conn.BeginTransaction();
                            foreach (var sql in scriptCollection)
                            {
                                using (var dbCommand = conn.CreateCommand())
                                {
                                    dbCommand.Transaction = dbTran;
                                    dbCommand.CommandType = CommandType.Text;

                                    dbCommand.CommandText = sql.Sql;
                                    sql.ParamterCollection.ForEach(item =>
                     {
                         _db.AddInParameter(dbCommand, item.ParameterName, item.DbType, item.Value);
                     });
                                    dbCommand.ExecuteNonQuery();
                                }
                            }
                            dbTran.Commit();
                        }
                        catch (Exception)
                        {
                            if (dbTran != null)
                                dbTran.Rollback();
                            throw;
                        }
                        finally
                        {
                            conn.Close();
                            conn.Dispose();
                        }
                    }
                    break;
            }
        }
Пример #4
0
 /// <summary>
 /// 根据更新模式,执行多个sql
 /// </summary>
 /// <param name="updateBehavior">更新模式</param>
 /// <param name="sqlTextCollection">sql集合</param>
 public void ExecuteMultiSql(DataUpdateBehavior updateBehavior, params string[] sqlTextCollection)
 {
     switch (updateBehavior)
     {
         case DataUpdateBehavior.Standard:
             foreach (var sql in sqlTextCollection)
                 ExecuteSql(sql);
             break;
         case DataUpdateBehavior.Continue:
             Exception ex = null;
             foreach (var sql in sqlTextCollection)
                 try
                 {
                     ExecuteSql(sql);
                 }
                 catch (Exception execEx)
                 {
                     ex = execEx;
                 }
             if (ex != null)
                 throw ex;
             break;
         case DataUpdateBehavior.Transactional:
             using (var conn = CreateConnection())
             {
                 conn.Open();
                 DbTransaction dbTran = null;
                 try
                 {
                     dbTran = conn.BeginTransaction();
                     using (var dbCommand = conn.CreateCommand())
                     {
                         dbCommand.Transaction = dbTran;
                         dbCommand.CommandType = CommandType.Text;
                         foreach (var sql in sqlTextCollection)
                         {
                             dbCommand.CommandText = sql;
                             dbCommand.ExecuteNonQuery();
                         }
                     }
                     dbTran.Commit();
                 }
                 catch (Exception)
                 {
                     if (dbTran != null)
                         dbTran.Rollback();
                     throw;
                 }
                 finally
                 {
                     conn.Close();
                     conn.Dispose();
                 }
             }
             break;
     }
 }
Пример #5
0
 ///<summary>
 ///  更新DataTable
 ///</summary>
 ///<param name = "dataSource">数据源</param>
 ///<param name = "commandType">命令</param>
 ///<param name = "updateBehavior">更新行为</param>
 public void UpdateDataTable(DataTable dataSource, UpdateCommandType commandType,
                             DataUpdateBehavior updateBehavior)
 {
     var updateCommandColl = new UpdateCommandConditionCollections(updateBehavior) { { dataSource, commandType, updateBehavior } };
     UpdateDataTable(updateCommandColl);
 }
Пример #6
0
        /// <summary>
        /// 执行sqlFor参数信息(根据参数信息和更新行为执行sql)
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="ParameterInfoList">参数信息集合(key:数据行号;value:参数集合)</param>
        /// <param name="updateBehavior">更新模式</param>
        public void ExecuteSqlForParameterInfo(string sql, Dictionary<int, List<ParameterInfo>> ParameterInfoList, DataUpdateBehavior updateBehavior)
        {
            switch (updateBehavior)
            {
                case DataUpdateBehavior.Standard:
                    DbCommand cmd = GetSqlStringCommand(sql);
                    foreach (var i in ParameterInfoList)
                    {
                        cmd.Parameters.Clear();
                        foreach (var p in i.Value)
                            _db.AddInParameter(cmd, p.ParameterName, p.DbType, p.Value);
                        _db.ExecuteNonQuery(cmd);

                    }
                    if (cmd.Connection != null)
                    {
                        cmd.Connection.Close();
                        cmd.Connection.Dispose();
                    }
                    break;
                case DataUpdateBehavior.Continue:
                    Exception ex = null;
                    DbCommand cmd1 = GetSqlStringCommand(sql);
                    foreach (var i in ParameterInfoList)
                    {
                        try
                        {
                            cmd1.Parameters.Clear();
                            foreach (var p in i.Value)
                                _db.AddInParameter(cmd1, p.ParameterName, p.DbType, p.Value);
                            _db.ExecuteNonQuery(cmd1);
                        }
                        catch (Exception execEx)
                        {
                            ex = execEx;
                        }
                        if (ex != null)
                            throw ex;
                    }
                    if (cmd1.Connection != null)
                    {
                        cmd1.Connection.Close();
                        cmd1.Connection.Dispose();
                    }
                    break;
                case DataUpdateBehavior.Transactional:
                    using (var conn = CreateConnection())
                    {
                        conn.Open();
                        DbTransaction dbTran = null;
                        try
                        {
                            dbTran = conn.BeginTransaction();
                            using (var dbCommand = conn.CreateCommand())
                            {
                                dbCommand.Transaction = dbTran;
                                dbCommand.CommandType = CommandType.Text;
                                dbCommand.CommandText = sql;
                                foreach (var i in ParameterInfoList)
                                {
                                    dbCommand.Parameters.Clear();
                                    foreach (var p in i.Value)
                                        _db.AddInParameter(dbCommand, p.ParameterName, p.DbType, p.Value);
                                    dbCommand.ExecuteNonQuery();
                                }
                            }
                            dbTran.Commit();
                        }
                        catch (Exception)
                        {
                            if (dbTran != null)
                                dbTran.Rollback();
                            throw;
                        }
                        finally
                        {
                            conn.Close();
                            conn.Dispose();
                        }
                    }
                    break;
            }
        }
Пример #7
0
 /// <summary>
 ///   构造
 /// </summary>
 /// <param name = "dataSource">数据源</param>
 /// <param name = "commandType">命令类型</param>
 /// <param name = "updateBehavior">更新行为</param>
 public UpdateCommandCondition(DataTable dataSource, UpdateCommandType commandType, DataUpdateBehavior updateBehavior)
     : this(dataSource, commandType)
 {
     UpdateBehavior = updateBehavior;
 }
        private async Task UpdateUserDisplayName()
        {
            var cmd = new UpdateAppUserDetailsCommand(new("user"), new("user (updated)"), DataUpdateBehavior <EmailAddress> .IgnoreValue());

            await mediator.Send(cmd);
        }
Пример #9
0
 /// <summary>
 ///   构造
 /// </summary>
 /// <param name = "dataSource">数据源</param>
 /// <param name = "commandType">命令类型</param>
 /// <param name = "updateBehavior">更新行为</param>
 public UpdateCommandCondition(DataTable dataSource, UpdateCommandType commandType, DataUpdateBehavior updateBehavior)
     : this(dataSource, commandType)
 {
     UpdateBehavior = updateBehavior;
 }