public static void BulkInsert <TEntity>(this IDbConnection dbConnection, List <TEntity> data, int timeout = 30, bool openConnection = true, bool closeConnection = true)
        {
            var datatable = DataTableHelper.ConvertToDatatable(data);

            SqlBulkCopy bulkCopy =
                new SqlBulkCopy
                (
                    (SqlConnection)dbConnection,
                    SqlBulkCopyOptions.TableLock |
                    SqlBulkCopyOptions.FireTriggers |
                    SqlBulkCopyOptions.UseInternalTransaction,
                    null
                );

            bulkCopy.DestinationTableName = datatable.TableName;
            bulkCopy.BulkCopyTimeout      = timeout;

            if (openConnection)
            {
                dbConnection.Open();
            }

            bulkCopy.WriteToServer(datatable);

            if (closeConnection)
            {
                dbConnection.Close();
            }
        }
Ejemplo n.º 2
0
        private void btnAddUser_Click(object sender, EventArgs e)
        {
            if (this.iGridEXGroup.CurrentRow != null)
            {
                var group = (SecurityGroupDto)this.iGridEXGroup.CurrentRow.DataRow;
                SecurityUserPresenter presenter = new SecurityUserPresenter();
                var       users = presenter.GetAll().UserDtoList;
                var       tbl   = DataTableHelper.ConvertToDatatable <UserDto>(users);
                ILov      lovActionOrder;
                LovFields lfActionOrder;
                lfActionOrder = new LovFields();
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((UserDto m) => m.FirstName), "نام", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((UserDto m) => m.LastName), "نام خانوادگی", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((UserDto m) => m.PersonelCode), "کد پرسنلی", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((UserDto m) => m.NationalNo), "کد ملی", 100, true);

                lovActionOrder = new ILov(this.btnAddUser, "ليست کاربران", tbl, lfActionOrder);
                var row = lovActionOrder.ShowDialog() as DataRow;
                if (row != null)
                {
                    var    userId       = row.Field <long>(AssemblyReflector.GetMemberName((UserDto m) => m.UserId));
                    var    selectedUser = users.Where(it => it.UserId == userId).FirstOrDefault();
                    string message      = string.Format("آیا از انتساب گروه {0} به {1} مطمئن هستید؟", group.DisplayName, selectedUser.FullName);
                    if (ISE.Framework.Client.Win.Viewer.MessageViewer.ShowAlert(message) != DialogResult.OK)
                    {
                        return;
                    }
                    view.AssignUser(group, selectedUser);
                }
            }
        }
Ejemplo n.º 3
0
        private void btnAddRole_Click(object sender, EventArgs e)
        {
            if (this.iGridEXGroup.CurrentRow != null)
            {
                var           group     = (SecurityGroupDto)this.iGridEXGroup.CurrentRow.DataRow;
                RolePresenter presenter = new RolePresenter();
                var           roles     = presenter.GetAll().RoleDtoList;
                var           tbl       = DataTableHelper.ConvertToDatatable <RoleDto>(roles);
                ILov          lovActionOrder;
                LovFields     lfActionOrder;
                lfActionOrder = new LovFields();
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((RoleDto m) => m.RoleName), "نام", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((RoleDto m) => m.AppDomainName), "نام حوزه", 100, true);


                lovActionOrder = new ILov(this.btnAddRole, "ليست نقش ها", tbl, lfActionOrder);
                var row = lovActionOrder.ShowDialog() as DataRow;
                if (row != null)
                {
                    var    roleId       = row.Field <int>(AssemblyReflector.GetMemberName((RoleDto m) => m.RoleId));
                    var    selectedRole = roles.Where(it => it.RoleId == roleId).FirstOrDefault();
                    string message      = string.Format("آیا از انتساب گروه {0} به  نفش {1} مطمئن هستید؟", group.DisplayName, selectedRole.RoleName);
                    if (ISE.Framework.Client.Win.Viewer.MessageViewer.ShowAlert(message) != DialogResult.OK)
                    {
                        return;
                    }
                    view.AssignRole(group, selectedRole);
                }
            }
        }
Ejemplo n.º 4
0
        private void btnAddRole_Click(object sender, EventArgs e)
        {
            if (this.gridUsers.CurrentRow != null)
            {
                var           user      = (UserDto)this.gridUsers.CurrentRow.DataRow;
                RolePresenter presenter = new RolePresenter();

                var       roleList = presenter.GetAll().RoleDtoList;
                var       tbl      = DataTableHelper.ConvertToDatatable <RoleDto>(roleList);
                ILov      lovActionOrder;
                LovFields lfActionOrder;
                lfActionOrder = new LovFields();
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((RoleDto m) => m.CondidateRoleName), "عنوان نقش", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((RoleDto m) => m.AppDomainName), "حوزه", 100, true);

                lovActionOrder = new ILov(this.btnAddRole, "ليست نقش ها", tbl, lfActionOrder);
                var row = lovActionOrder.ShowDialog() as DataRow;
                if (row != null)
                {
                    var    roleId       = row.Field <int>(AssemblyReflector.GetMemberName((RoleDto m) => m.RoleId));
                    var    selectedRole = roleList.Where(it => it.RoleId == roleId).FirstOrDefault();
                    string message      = string.Format("آیا از انتساب نقش {0} به {1} مطمئن هستید؟", selectedRole.CondidateRoleName, user.FullName);
                    if (ISE.Framework.Client.Win.Viewer.MessageViewer.ShowAlert(message) != DialogResult.OK)
                    {
                        return;
                    }
                    view.AssignToRoles(user, selectedRole);
                }
            }
        }
Ejemplo n.º 5
0
        private void btnAddGrp_Click(object sender, EventArgs e)
        {
            if (this.gridUsers.CurrentRow != null)
            {
                var user = (UserDto)this.gridUsers.CurrentRow.DataRow;
                SecurityGroupPresenter presenter = new SecurityGroupPresenter();
                var       group = presenter.GetAll().SecurityGroupDtoList;
                var       tbl   = DataTableHelper.ConvertToDatatable <SecurityGroupDto>(group);
                ILov      lovActionOrder;
                LovFields lfActionOrder;
                lfActionOrder = new LovFields();
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.DisplayName), "عنوان گروه", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.AppDomainName), "حوزه", 100, true);

                lovActionOrder = new ILov(this.btnAddGrp, "ليست نقش ها", tbl, lfActionOrder);
                var row = lovActionOrder.ShowDialog() as DataRow;
                if (row != null)
                {
                    var    groupId       = row.Field <int>(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.SecurityGroupId));
                    var    selectedGroup = group.Where(it => it.SecurityGroupId == groupId).FirstOrDefault();
                    string message       = string.Format("آیا از انتساب گروه {0} به {1} مطمئن هستید؟", selectedGroup.DisplayName, user.FullName);
                    if (ISE.Framework.Client.Win.Viewer.MessageViewer.ShowAlert(message) != DialogResult.OK)
                    {
                        return;
                    }
                    view.AssignToGroups(user, selectedGroup);
                }
            }
        }
Ejemplo n.º 6
0
        private void btnCompany_Click(object sender, EventArgs e)
        {
            var       result = view.LoadCompanies();
            var       tbl    = DataTableHelper.ConvertToDatatable <CompanyDto>(result);
            ILov      lovActionOrder;
            LovFields lfActionOrder;

            lfActionOrder = new LovFields();
            lfActionOrder.AddItem(AssemblyReflector.GetMemberName((CompanyDto m) => m.Name), "نام شرکت", 200, true);
            lfActionOrder.AddItem(AssemblyReflector.GetMemberName((CompanyDto m) => m.NationalNo), "کد شناسایی ملی", 100, true);

            lovActionOrder = new ILov(this.btnCompany, "ليست شرکت ها", tbl, lfActionOrder);
            var row = lovActionOrder.ShowDialog() as DataRow;

            if (row != null)
            {
                var companId        = row.Field <int>(AssemblyReflector.GetMemberName((CompanyDto m) => m.CompanyId));
                var selectedCompany = result.Where(it => it.CompanyId == companId).FirstOrDefault();
                if (selectedCompany != null)
                {
                    txtCompany.Text = selectedCompany.Name;
                    txtCompany.Tag  = selectedCompany;
                }
            }
        }
Ejemplo n.º 7
0
        private void btnAddGrp_Click(object sender, EventArgs e)
        {
            if (this.iGridEX1.CurrentRow != null)
            {
                var role = (RoleDto)this.iGridEX1.CurrentRow.DataRow;
                SecurityGroupPresenter presenter = new SecurityGroupPresenter();
                var       groups = presenter.GetAll().SecurityGroupDtoList;
                var       tbl    = DataTableHelper.ConvertToDatatable <SecurityGroupDto>(groups);
                ILov      lovActionOrder;
                LovFields lfActionOrder;
                lfActionOrder = new LovFields();
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.GroupName), "نام", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.AppDomainName), "نام خانوادگی", 100, true);
                lfActionOrder.AddItem(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.DisplayName), "نام نمایشی", 100, true);


                lovActionOrder = new ILov(this.btnAddGrp, "ليست گروه ها", tbl, lfActionOrder);
                var row = lovActionOrder.ShowDialog() as DataRow;
                if (row != null)
                {
                    var    grpId         = row.Field <int>(AssemblyReflector.GetMemberName((SecurityGroupDto m) => m.SecurityGroupId));
                    var    selectedGroup = groups.Where(it => it.SecurityGroupId == grpId).FirstOrDefault();
                    string message       = string.Format("آیا از عضویت نقش {0} در {1} مطمئن هستید؟", role.RoleName, selectedGroup.DisplayName);
                    if (ISE.Framework.Client.Win.Viewer.MessageViewer.ShowAlert(message) != DialogResult.OK)
                    {
                        return;
                    }
                    view.AssignToGroup(role, selectedGroup);
                }
            }
        }
Ejemplo n.º 8
0
        public static void BulkInsertOrUpdate <TEntity>(this IDbConnection dbConnection, IEnumerable <TEntity> data, int timeout = 30, bool openConnection = true, bool closeConnection = true)
        {
            DataTable dataTable = DataTableHelper.ConvertToDatatable(data.ToList());

            var sqlBulkEntityConfiguration = CacheHelper.GetConfiguration <TEntity>();

            var tempTableName = sqlBulkEntityConfiguration.FullTempTableName;

            SqlConnection conn = (SqlConnection)dbConnection;

            using (SqlCommand command = new SqlCommand(string.Empty, conn))
            {
                try
                {
                    if (openConnection)
                    {
                        conn.Open();
                    }

                    command.CommandText = TableHelper.GenerateLocalTempTableScript <TEntity>();
                    command.ExecuteNonQuery();


                    SqlBulkCopy bulkCopy =
                        new SqlBulkCopy
                        (
                            (SqlConnection)dbConnection,
                            SqlBulkCopyOptions.TableLock |
                            SqlBulkCopyOptions.FireTriggers |
                            SqlBulkCopyOptions.UseInternalTransaction,
                            null
                        );

                    bulkCopy.BulkCopyTimeout      = timeout;
                    bulkCopy.DestinationTableName = tempTableName;
                    bulkCopy.WriteToServer(dataTable);
                    bulkCopy.Close();

                    string setUpdate     = TableHelper.GenerateSetUpdate <TEntity>();
                    string onJoin        = TableHelper.GenerateOnJoin <TEntity>();
                    string valuesUpdate  = TableHelper.GenerateValuesUpdate <TEntity>();
                    string columnsInsert = TableHelper.GenerateColumnsInsert <TEntity>();

                    command.CommandTimeout = timeout;
                    command.CommandText    = $@"MERGE INTO {dataTable.TableName} 
                                            WITH(HOLDLOCK) USING {tempTableName}
                                            {onJoin}
                                            WHEN MATCHED THEN UPDATE SET {setUpdate}
                                            WHEN NOT MATCHED BY TARGET THEN INSERT({columnsInsert}) values({valuesUpdate});
                                            DROP TABLE {tempTableName};";
                    command.ExecuteNonQuery();
                }
                finally
                {
                    if (closeConnection && dbConnection.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                }
            }
        }