- [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
- [SQLSERVER] Hướng dẫn tạo script sql từ ứng dụng Sqlserver management Studio
- [C#] Hướng dẫn sử dụng thư viện AutoITx lấy id và password Ultraviewer trên winform
- [VB.NET] Hướng dẫn lấy thông tin tài khoản đăng nhập windows và khởi động lại ứng dụng ở chế độ Administrator
- [C#] Sử dụng thư viện Polly gửi lại request api khi request bị lỗi hay rớt mạng
- [DEVEXPRESS] Chia sẻ source code tạo báo cáo report in tem nhãn label trên C# winform
- [DEVEXPRESS] Hướng dẫn vẽ biểu đồ Bar Chart trên Winform
- [C#] Tạo form đăng nhập và đăng ký với hiệu ứng Sliding Animation Effect
- [C#] Hướng dẫn tạo thanh toán đơn hàng qua mã vạch VietQR sử dụng API PayOS hoàn toàn miễn phí
- [C#] Hướng dẫn ghi log ra RichTextBox giống Console trên Winform sử dụng thư viện Serilog
- [C#] Hướng dẫn cách tạo mã QR Code trên file Excel
- [VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
- [C#] Viết ứng dụng Auto Fill list Textbox from clipboard Winform
- [TOOL] Chia sẻ phần mềm thay đổi thông tin cấu hình máy tính
- [C#] Hướng dẫn Export dữ liệu ra file Microsoft Word Template
- [C#] Chia sẻ source code tool kiểm tra domain website
- [C#] Hướng dẫn tạo file PDF sử dụng thư viện QuestPDF
[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!