- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
- Hướng dẫn khóa file bằng nhiều process id, không cho xóa tập tin
- Hướng dẫn cách tạo Product Id cho ứng dụng phần mềm XXXXX-XXXXX-XXXXX-XXXXX
[DEVEXPRESS] Tutorial Insert, Update, Delete DB SQLSERVER with XPO Framework
Xin chào các bạn, bài viết hôm nay mình sẻ tiếp tục hướng dẫn các bạn thao thác thêm, xóa, sửa trên Devexpress sử dụng XPO Framework.
[DEVEXPRESS] Tutorial Insert, Update, Delete DB SQLSERVER with XPO Framework
Express Persistent Objects (or XPO) is an Object-Relational Mapping (ORM) tool for .NET.
XPO một công cụ của Devexpress, giống như Dapper
hay Entity Framework
.
Giao diện demo ứng dụng CRUD SQL with XPO:
Video hướng dẫn step by step từng bước thực hiện:
Source code tạo class Student.cs
:
using DevExpress.Xpo;
using System;
namespace SimpleXPOCrud
{
[OptimisticLocking(true)]
public class Student : XPLiteObject
{
public Student(Session session) : base(session)
{
session.LockingOption = LockingOption.Optimistic;
}
string _code;
[Key, Persistent("Code")]
[Size(10)]
public string Code
{
get { return _code; }
set { SetPropertyValue(nameof(Code), ref _code, value); }
}
string _name;
[Size(50)]
public string Name
{
get { return _name; }
set { SetPropertyValue(nameof(Name), ref _name, value); }
}
string _address;
[Size(50)]
public string Address
{
get { return _address; }
set { SetPropertyValue(nameof(Address), ref _address, value); }
}
DateTime _dateOfBirth;
public DateTime DateOfBirth
{
get { return _dateOfBirth; }
set { SetPropertyValue(nameof(DateOfBirth), ref _dateOfBirth, value); }
}
string _gender;
[Size(50)]
public string Gender
{
get { return _gender; }
set { SetPropertyValue(nameof(Gender), ref _gender, value); }
}
}
}
Source code trên Form1.cs
using DevExpress.Xpo.DB;
using DevExpress.Xpo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using static System.Runtime.CompilerServices.RuntimeHelpers;
namespace SimpleXPOCrud
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
gridView1.FocusedRowChanged += GridView1_FocusedRowChanged;
}
private void GridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
var student = gridView1.GetFocusedRow() as Student;
if (student != null)
{
txtCode.Text = student.Code;
txtFullName.Text = student.Name;
txtAddress.Text = student.Address;
txtDate.EditValue = student.DateOfBirth;
txtGender.EditValue = student.Gender;
}
}
private XPCollection xpCollection;
private void Form1_Load(object sender, EventArgs e)
{
string connectionString = MSSqlConnectionProvider.GetConnectionString("TMV2209068\\SQLEXPRESS", "sa", "LapTrinhVBNet@2022", "XPOCRUDDemo");
XpoDefault.DataLayer = XpoDefault.GetDataLayer(connectionString, AutoCreateOption.DatabaseAndSchema);
LoadData();
}
public void LoadData() {
xpCollection = new XPCollection(typeof(Student));
gridControl1.DataSource = xpCollection;
}
private void btnDelete_Click(object sender, EventArgs e)
{
var dlg = XtraMessageBox.Show($"Do you want <b><color=red>Delete</color></b> student selected?", "Mesasge", MessageBoxButtons.YesNo, MessageBoxIcon.Question, DevExpress.Utils.DefaultBoolean.True);
if (dlg == DialogResult.Yes)
{
using (var uow = new UnitOfWork())
{
var list = gridView1.GetSelectedRows().Select(x => gridView1.GetRow(x) as Student).ToList();
var students = uow.Query<Student>().AsEnumerable().Where(s => list.Any(x => s.Code == x.Code)).ToList();
uow.Delete(students);
uow.CommitChanges();
xpCollection.Reload();
}
}
}
private void btnSave_Click(object sender, EventArgs e)
{
using (var uow = new UnitOfWork())
{
var student = new Student(uow);
student.Code = txtCode.Text;
student.Name = txtFullName.Text;
student.DateOfBirth = DateTime.Parse(txtDate.EditValue.ToString());
student.Address = txtAddress.Text;
student.Gender = txtGender.Text;
var isExisted = uow.Query<Student>()
.Where(x => x.Code == txtCode.Text).ToList().Count > 0;
if (isExisted)
{
XtraMessageBox.Show($"Mã sinh viên: {student.Code} này đã tồn tại.");
txtCode.Focus();
return;
}
uow.CommitChanges();
xpCollection.Reload();
XtraMessageBox.Show($"Save Successful!", "Message");
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
var studentCode = txtCode.Text;
var dlg = XtraMessageBox.Show($"Do you want update Student: <b><color=red>{txtFullName.Text}</color></b>", "Mesasge", MessageBoxButtons.YesNo, MessageBoxIcon.Question, DevExpress.Utils.DefaultBoolean.True);
if (dlg == DialogResult.Yes)
{
using (var uow = new UnitOfWork())
{
var student = uow.Query<Student>().Where(s => s.Code == studentCode).FirstOrDefault();
student.Address = txtAddress.Text;
student.Gender = txtGender.Text;
student.Name = txtFullName.Text;
student.DateOfBirth = DateTime.Parse(txtDate.EditValue.ToString());
uow.CommitChanges();
xpCollection.Reload();
}
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
txtCode.Text = "";
txtFullName.Text = "";
txtAddress.Text = "";
txtGender.Text = "";
txtCode.Focus();
}
}
}
Thanks for watching!