Bài 12-Xóa dữ liệu MongoDB trong C#-WPF

Như vậy CRUD ta đã làm được C, R, U , bài này sẽ kết thúc CRUD với D(Delete), bài sau ta sẽ dùng Android Kotlin để tương tác với MongoDB.

Kết thúc bài này ta phải làm được chương trình như dưới đây:

Ở chương trình trên muốn xóa Product ta có 2 cách: Bấm vào nút Xóa hoặc Bấm chuột phải vào từng Product để xóa.

Về trải nghiệm người dùng thì thông thường họ sẽ muốn Xóa 1 Product hoặc xóa nhiều Product cùng lúc, dưới đây là coding xóa 1 Product:

[code language=”csharp”]

MongoClient client = new MongoClient(“mongodb://localhost:27017”);
IMongoDatabase database = client.GetDatabase(“QuanLySanPham”);
IMongoCollection collection = database.GetCollection(“Product”);

var filter = Builders.Filter.Eq(“Ma”, “P3”);
var result=collection.DeleteOne(filter);
if (result.DeletedCount > 0)
MessageBox.Show(“xóa thành công”);
else
MessageBox.Show(“xóa thất bại”);

[/code]

Coding ở trên sẽ xóa 1 ProductP3. DeletedCount sẽ trả về số Record được xóa thành công trong MongoDB. DO đó thông thường ta so sánh nó với 0 để biết xóa thành công hay thất bại

Để xóa nhiều ta làm như sau:

[code language=”csharp”]

MongoClient client = new MongoClient(“mongodb://localhost:27017”);
IMongoDatabase database = client.GetDatabase(“QuanLySanPham”);
IMongoCollection collection = database.GetCollection(“Product”);
var builder = Builders.Filter;
List dsXoa = new List();
dsXoa.Add(builder.Eq(“Ma”, “P2”));
dsXoa.Add(builder.Eq(“Ma”, “P5”));
var query = builder.Or(dsXoa);
var result = collection.DeleteMany(query);
if (result.DeletedCount > 0)
MessageBox.Show(“xóa thành công”);
else
MessageBox.Show(“xóa thất bại”);

[/code]

Đoạn code ở trên dùng để xóa 2 Product lần lượt có mã là P2 P5. Hàm DeleteMany giúp ta xóa nhiều Đối tượng trong Mongo, tương tự như phần xóa 1 đối tượng thì nó cũng trả về một kết quả cho ta biết được có bao nhiêu đối tượng được xóa thành công (DeletedCount).

Các bạn lưu ý cái list dsXoa(tên đặt sao cũng được), bản chất của nó là định nghĩa tập các điều kiện lọc Product theo tiêu chí mà bạn muốn (để tạo đầu vào cho câu Query thôi. Do đó bạn có thể kết hợp một cách rất linh động, chẳng hạn như: Lọc Sản phẩm có đơn giá trong vùng nào đó, hay kết hợp vừa đơn giá vừa có nhà sản xuất, ngày nhập hàng… tùy vào cấu trúc cơ sở dữ liệu của bạn.

Trong bài này Tui chỉ hướng dẫn xóa 1 Product, Tui có 1 Bài tập nho nhỏ cho các bạn là hãy viết lệnh xóa nhiều Product bằng cách mỗi dòng hiển thị bổ sung thêm một Checkbox đằng trước, những Product nào được checked thì sẽ được xóa.

Ta tiến hành viết chức năng xóa 1 Product nhé (vẫn dùng Project CRUD_MongoCSharp ở các bài học trước, bài này ta chỉ bổ sung phần xóa để tránh mất thời gian), đầu tiên thiết kế XAML để có ContextMenu (các phần khác đã làm ở những bài trước), chỉnh MainWindow.xaml thành như dưới đây:

[code language=”xml”]

[/code]

Coding Xử lý cho phần xóa (MainWindow.xaml.cs):

[code language=”csharp”]

void XuLyXoa()
{
if (lvProduct.SelectedIndex == -1)
return;

Product p = lvProduct.SelectedItem as Product;

MongoClient client = new MongoClient(“mongodb://localhost:27017”);
IMongoDatabase database = client.GetDatabase(“QuanLySanPham”);
IMongoCollection collection = database.GetCollection(“Product”);

var filter = Builders.Filter.Eq(“Ma”, p.Ma);
var result = collection.DeleteOne(filter);
if (result.DeletedCount > 0)
MessageBox.Show(“xóa thành công”);
else
MessageBox.Show(“xóa thất bại”);
}
private void btnXoa_Click(object sender, RoutedEventArgs e)
{
XuLyXoa();
}
private void mnuXoa_Click(object sender, RoutedEventArgs e)
{
XuLyXoa();
}

[/code]

Chạy chương trình lên ta có được kết quả như mong muốn.

Các bạn có thể tải source code đầy đủ ở đây: Source code xóa Sản phẩm

Bài học Sau Tui sẽ hướng dẫn các bạn các kỹ thuật dùng Android – Kotlin để tương tác với dữ liệu MongoDB, các bạn chú ý theo dõi.

Các khóa học online khác, bạn có thể tham khảo tại đây:

https://unica.vn/?aff=11929

Chúc các bạn thành công!

Leave a Reply