LightSwitch: Override CRUD đối với chiến thuật Table có trường IsDeleted

LightSwitch: Override CRUD đối với chiến thuật Table có trường IsDeleted

 

Trong 1 số trường hợp thiết kế cơ sở dữ liệu, người ta muốn Table trong cơ sở dữ liệu quan hệ có thêm chiều lịch sử. Cách đơn giản là người ta thêm 1 trường IsDeleted kiểu bit vào.

Khi xóa 1 record sẽ không xóa mất khỏi Table mà chỉ cập nhật IsDeleted = true.

Khi đọc lên thì sẽ lọc những record có IsDeleted = false.

Người dùng đầu cuối sẽ không thấy được trường IsDeleted này trên giao diện.

CRUD mặc định của Lightswitch lúc này sẽ không đáp ứng được yêu cầu trên.

Vì vậy, cần override lại CRUD của Lightswitch.

Lấy 1 ví dụ đơn giản như hình sau:

clip_image002

Và tạo 1 cái screen editable grid mặc định cho Product.

 

1.  Override Read:

      Xóa các trường IsDeleted xuất hiện trên VisualTree đi

      Vào EditQuery của Product

clip_image003

Và thêm điều kiện lọc như hình sau:

clip_image004

Rồi back về.

 

2.  Override Create:

Áp dụng kĩ thuật tạo Custom Modal Windows để tạo Dialog không có trường IsDeleted

Có thể tham khảo bài sau:

https://vkhangyang.wordpress.com/2013/04/18/tao-multiline-textbox-v-modal-windows-chua-multiline-textbox-trong-ung-dung-lightswitch/

 

3.  Override Update:

Tương tự như Create

 

4.  Override Delete:

Override lại Delete Command:

        partial void gridDeleteSelected_CanExecute(ref bool result)
        {
            result = this.Products.CanEdit;
        }

        partial void gridDeleteSelected_Execute()
        {
            this.Products.SelectedItem.IsDeleted = true;
        }

 

        partial void EditableProductsGrid_Saved()
        {
            this.Products.Refresh();
        }

Sự kiện Saved của toàn trang cũng cần phải override lại để nó refresh lại source để bộ lọc có tác dụng.

 

 

 

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s