//Đây là code ví dụ cho lớp ViewModel trong mô hình MVVM theo cách thông thường
using SQL_SV_MVVM.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SQL_SV_MVVM.ViewModels
{
internal class SinhVienViewModel
{
public static SQL_SinhVienEntities db = new SQL_SinhVienEntities();
public static List ListSinhVien()
{
var sv = db.SINHVIENs.ToList();
return sv;
}
public static SINHVIEN getMaSV(String maSV) {
var sv = db.SINHVIENs.FirstOrDefault(x => x.MaSV == maSV);
return sv;
//return db.SINHVIENs.Find(maSV); //Dòng này không được vì
//Hàm Find() trong Entity Framework chỉ dùng được để tìm theo khóa chính (Primary Key)
}
public static List TimKiemSinhVien(string tim)
{
tim = tim.ToLower();
var kqTim = db.SINHVIENs.Where(sv =>
sv.MaSV.ToLower().Contains(tim)
|| sv.HoTen.ToLower().Contains(tim)).ToList();
return kqTim;
}
public static List LocCombo(String maKhoa)
{
maKhoa = maKhoa.ToLower();
var kqLoc = db.SINHVIENs.Where(sv =>
sv.MaKhoa.ToLower().Contains(maKhoa)).ToList();
return kqLoc;
}
public static bool ThemSV(SINHVIEN sv)
{
try{
db.SINHVIENs.Add(sv);
db.SaveChanges();
return true;
}catch (Exception ex){
Console.WriteLine("Lỗi" + ex.Message);
return false;
}
}
public static bool SuaSV()
//Không truyền tham số vì đối tượng SINHVIEN cần sửa đang được theo dõi(tracked) sẵn.
{
try
{
// EF tạo câu lệnh SQL tương ứng
// UPDATE SINHVIEN SET HoTen = '...', MaKhoa = '...' WHERE MaSV = 'SV001'
db.SaveChanges();
//Ghi thay đổi vào cơ sở dữ liệu. //Trả về true nếu thành công.
return true;
}
catch (Exception ex)
{
Console.WriteLine("Lỗi: " + ex.Message);
return false;
}
}
public static bool XoaSV(SINHVIEN sv)
{
try
{
db.SINHVIENs.Remove(sv);
db.SaveChanges();
return true;
}
catch (Exception ex)
{
Console.WriteLine("Lỗi " + ex.Message);
return false;
}
}
public static int Dem()
{
return db.SINHVIENs.Count();
}
}
}