Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)Tìm hiểu về LINQ to SQL và ứng dụng (Đồ án tốt nghiệp)
Trang 2- 2017
Trang 3Sinh viên Mã sinh viên: 1312101025
Ng
Trang 4m th c t p
Trang 5
ngày tháng ngày tháng
Sinh viên
Trang 6
Trang 7
Trang 8
Em xin chân thành c
H i Phòng, ngày 31 tháng 08
Sinh viên
Trang 91.1.1 .8
1.1.2 .9
1.2 LINQ to SQL 10
1.2.1 .11
1.2.2 L 12
12
b) n 13
14
1.3 15
1.4 .15
1.4.1 Object Model 15
1.4.2 ORM (Object Relations Mapping ) 16
1.4.3 O/R Designer ( Object Relations Designer) 17
1.4.4 Entity Class 18
1.4.5 Association 18
1.4.6 DataContext 18
1.5 18
1.6 19
1.7 20
23
XÂY D NG D NG 23
2.1 23
2.1.1 .23
2.1.2 .23
2.1.3 25
2 .28
2.2.1 .28
Trang 102.2.2 .33
75
K T QU C NGHI M 75
3.1 .75
3.1.1 .75
a) .75
b) .75
c) .80
d) Ngành 82
e) .82
3.2 .86
K T LU N 87
TÀI LI U THAM KH O 88
Trang 11Hình .19
Hình LinQ to SQL 19
Hình 2.1 24
Hình .25
Hình 2.3 26
Hình 2.4 27
Hình 2.5 HI 27
Hình 2.6 .28
Hình 2.7 .29
Hình 2.8 29
Hình 2.9 .30
Hình 2.10 .30
Hình 2.11 .31
Hình 2.12 31
Hình 2.13 32
Hình 2.14 .32
Hình .33
Hình .34
Hình .35
Hình .36
Hình .36
Hình .37
Hình .38
Hình .38
Hình .39
Hình .40
Trang 12Hình .41
Hình .42
Hình .43
Hình .44
Hình .45
Hình .46
Hình 47
Hình .48
Hình .48
Hình .49
Hình .50
Hình .51
Hình .52
Hình .53
Hình .54
Hình 55
Hình .56
Hình .57
Hình .57
Hình .58
Hình .59
Hình .60
Hình .61
Hình .62
Hình 2.49 Mã .63
Hình .63
Hình .64
Hình .65
Hình ew 66
Trang 13Hình .77
Hình sinh viên theo mã sinh viên 77
Hình .78
Hình .78
Hình .79
Hình .79
Hình .80
Hình .80
Hình 3.12.C p nh t ngành 81
Hình .81
Hình .82
Hình .82
Hình .83
Hình sinh viên 83
Hình .84
Hình .84
Hình .85
Hình .85
Trang 14mà
Trang 16
-1.1 LinQ là gì?
k
LINQ (Language Integrated Query
(objects) LINQ cho
1.1.1.
Student Classroom
Trang 17Mangsinhvien và Mangtruong
Trang 18SQL Sever Databases: LinQ to Sql
XML documents: LinQ to XML
ADO.NET datasets : LINQ to Dataset
+ Cho phép truy v n các Dataset ho c DataTable
LinQ to Objects
+ Cho phép truy v ng trong m t t p các ph n t ngu n, các
Hình 1.1
Trang 19M i c a LINQ hay ph c v cho h qu n tr
s d li u SQL Server và n n t ng NET nói chung hay ngôn ng l p trình C#/VB.NET nói riêng ch không ph i m i trà cho các ngôn ng l p trình hay các h qu n tr d li u khác Ta bi t r ng:
C# là
Trang 20thành viên trong gia
a)
em
Trang 21QLHP sinhvien-lop-nganh-danop-v_danop,
.
b)
LINQ to SQL cu
Hình 1.2
Trang 22Hình 1.3
Trang 23Ch thao tác duy nh t v i h qu n tr d li u SQL server.
Ch có th t ng t o Data Model t Database ch không th t o Database t Data Model.
Ch cho phép ánh x 1:1 gi a các Table v i các l p Data Model ( t c là không th
t o 1 Data Model là k t qu k t h p t 2 b ng d li u tr lên).
- Object Model
- ORM ( Object Relations Mapping )
- O/R Designer ( Object Relations Designer )
Trang 241.4.2 ORM (Object Relations Mapping)
tr c ti p 1-1 gi
s d li u quan h v i các class c a NET.
T mô hình quan h Database Diagram chuy n thành LINQ to SQL Mapping Diagram.
Visual Studio IDE t phiên b n 2008 có h tr 2 ORM là : LINQ to SQL và ADO.NET ENTITY FRAME WORK ( có t version 3.5 SP1).
Hình 1
Trang 251.4.3 O/R Designer ( Object Relations Designer )
Là m t công c trong Visual Studio IDE có t phiên b
h tr vi c t o ra Oblect Model.
Phát sinh ra các ENTITY Class (Các Table, View t d li c
ENTITY Class s ánh x n m t Table và m t Property s ánh x n
m t Column c a Table.
Hình 1
Hình 1
Trang 26Có th t o ra m t Strong-Typed DATACONTEXT cho riêng ng d ng
Trang 27
-Là c u n i giao ti p gi a Application và SQL Server
Hình 1
Hình 1
Trang 28Select Data : ng truy v n và l y d li u t d li u b ng câu
Trang 29Join : ng liên k t các b d li u b ng câu l nh LinQ
to SQL.
+
Trang 30+
+
Trang 31Ho ng qu n lí h c phí c i h c Dân l p H c mô t
a) ng có r t nhi u ngành h c khác nhau, thông tin v m i ngành
nh t m i ngành.
b) Có r t nhi u l p h c khác nhau, m i l p có m t Mã l p duy nh t Nhi u
c) ng có r t nhi u sinh viên, thông tin v m i sinh viên bao g m:
Mã sinh viên, H tên sinh viên, Ngày sinh, Khóa h c Mã sinh viên nh duy nh t m i sinh viên Nhi u sinh viên thu c m t l p.
d) Khi sinh viên n p ti n h c phí thì thông tin s c ghi l i g m: S phi u
n p, Ngày n p h c phí, S ti n sinh viên n p S phi u n p xác
nh duy nh t M i l n sinh viên n p h c phí thì s có m t phi u n p duy
a) V mô hình ER
Trang 32SINH VIÊNcó
Mã sinh viên
Ngày sinh1
1
1n
n
n
Hình 2.1
Trang 33sinh viên, H tên, Ngày sinh, Khóa h c, Mã l p Khóa chính là Mã sinh viên, khóa ngoài là Mã l p
g m các c t: S phi u, Ngày n p, S ti phi u là khóa chính, khóa ngoài là Mã sinh viên
Hình 2.2
Trang 34Hình 2.3
Trang 35Hình 2.5
Hình 2.6
Trang 36FILE NEW PROJECT
Hình 2.7
Trang 37Project Item (Ctrl + Shift + A)
Hình 2.8
Hình 2.9
Trang 38Hình 2.10
Hình 2.11
Trang 39Hình 2.12
Hình 2.13
Trang 40Hình 2.14
Trang 41Code ch y giao di n Menu
private void thôngTinCácSinhViênToolStripMenuItem_Click(object sender, EventArgs e){
Sinh_viên f = new Sinh_viên();
Trang 42Giao di n Form Sinh viên
Hình
Trang 43T o truy v n cho Form sinh viên
Hình 2.18 Giao
Trang 44T o th t truy v n d li u cho List Box c a
b ng sinh viên
Database HOCPHI
Ch n Programmability => Click chu t ph i vào Stored Prceduces
=> New Stored Prceduces
Hình
Trang 45t truy v n d li u theo tên Sinh viên c a List Box
t c Stored Prceduces truy v n d li u.
o m i gian vi t code, gi m thi u tình tr ng quá t i cho
Hình
Trang 46G i th t c Stored Prceduces b ng câu l nh LinQ to SQL
private void lb_timsinhvien_SelectedIndexChanged(object sender, EventArgs e){
Trang 47+ d ng ch a LinQ to SQL
Câu l nh cho nút Thêm m i
private void bt_themmoi_Click(object sender, EventArgs e){
Trang 48sinhvien sv = new sinhvien();
p thông tin Sinh viên c}
Hình
Trang 49Câu l nh cho nút S a
Hình
Trang 50Câu l nh cho nút Xóa
private void bt_xoa_Click(object sender, EventArgs e)
{
var svtim = (from bangsv in db.sinhviens
where bangsv.Mã_SV == tb_masv.Text
foreach (var sv in svtim)
Trang 51Câu l nh cho nút Tìm ki m sinh viên theo mã sinh viên
var query = from k in lp
join sv in Sinhviens on k.Mã_l p equals sv.Mã_l pjoin n in ng on k.Mã_ngành equals n.Mã_ngànhwhere sv.Mã_SV == tb_masv.Text
group k by new { k.Mã_l p, sv.Mã_SV, sv.H _tên, sv.Khóa_h c, sv.Ngày_sinh, n.Tên_ngành } into nh
select new { nh.Key.Mã_SV, nh.Key.H _tên, nh.Key.Ngày_sinh, nh.Key.Khóa_h c, nh.Key.Mã_l p, nh.Key.Tên_ngành };
Trang 53Câu l nh cho nút Th p h c phí theo l p +
Hình
Trang 54+
Hình
Trang 55T o truy v n cho Form L p
// hi n th toàn b danh sách sinh viên lên b xem
}
Hình
Trang 56G i th t c Stored Prceduces b ng câu l nh LinQ to SQL +
Hình
Trang 57Câu l nh cho nút Thêm m i
private void bt_thêm_Click(object sender, EventArgs e)
{
tb_malop.Text = null;
tb_manganh.Text = null;
Hình
Trang 58//hi n th l i d li u c a b c thêm m i
var svnew = from banglop in db.lops
Hình
Trang 59Câu l nh cho nút S a
private void bt_s a_Click(object sender, EventArgs e)
{
//tìm sinh viên c n s c nh p vào t b ng sinh viên
var loptim = (from banglop in db.lops
where banglop.Mã_l p == tb_malop.Textselect banglop);
//duy t t ng v c trong b th c hi n s a các thông tin theo yêu
Trang 60Câu l nh cho nút Xóa
private void bt_xóa_Click(object sender, EventArgs e){
var loptim = (from banglop in db.lops
where banglop.Mã_l p == tb_malop.Textselect banglop);
foreach (var sv in loptim)
Trang 61Câu l nh cho nút Tìm ki m l p theo mã l p
group k by new { k.Mã_l p, n.Mã_ngành, n.Tên_ngành } into nhselect new { nh.Key.Mã_l p, nh.Key.Mã_ngành, nh.Key.Tên_ngành };dtg_ket_qua.DataSource = query;
Trang 62Câu l nh cho nút Th ng kê h c phí c a các sinh viên trong l p theo mã
var query = from k in lp
join sv in Sinhviens on k.Mã_l p equals sv.Mã_l pjoin a in dn on sv.Mã_SV equals a.Mã_SV
Trang 64T o truy v n cho Form Ngành
private void F_Nganh_Load(object sender, EventArgs e)
{
//hi n th toàn b sinh viên lên danh sách ch tìm
var nganhnew = from bangnganh in db.nganhs
Trang 65G i th t c Stored Prceduces b ng câu l nh LinQ to SQL
Trang 66Câu l nh cho Data Grid View c a Form L p
private void dtg_ket_qua_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int r = dtg_ket_qua.CurrentCell.RowIndex;
var manganh_tim = dtg_ket_qua.Rows[r].Cells[0].Value.ToString();
var nganhtim = (from bangnganh in db.nganhs
where bangnganh.Mã_ngành == manganh_timselect bangnganh);
foreach (var kq in nganhtim)
Câu l nh cho nút Thêm m i
private void bt_themmoi_Click(object sender, EventArgs e)
Hình
Trang 67p thông tin Ngành c}
//hi n th l i d li u c a b ng s c thêm m ivar nganhnew = from bangnganh in db.nganhs
Trang 68Câu l nh cho nút S a
private void bt_sua_Click(object sender, EventArgs e)
{
var nganhtim = (from bangnganh in db.nganhs
where bangnganh.Mã_ngành == tb_manganh.Textselect bangnganh);
//duy t t ng v c trong b th c hi n s a các thông tin theo yêu c u
foreach (var sv in nganhtim){
sv.Mã_ngành = tb_manganh.Text;
sv.Tên_ngành = tb_tennganh.Text;
}db.SubmitChanges();
Trang 69Câu l nh cho nút Xóa
+
private void bt_xoa_Click(object sender, EventArgs e)
{
var nganhtim = (from bangnganh in db.nganhs
where bangnganh.Mã_ngành == tb_manganh.Textselect bangnganh);
foreach (var sv in nganhtim)
Trang 70Câu l nh cho nút Tìm ki m ngành theo mã ngành +
private void bt_tim_Click(object sender, EventArgs e)
{
if (tb_manganh.Text != ""){
var nganhtim = (from bangnganh in db.nganhs
where bangnganh.Mã_ngành == tb_manganh.Textselect bangnganh);
dtg_ket_qua.DataSource = nganhtim;
tb_manganh.Text = null;
tb_tennganh.Text = null;
}else{MessageBox.Show("C p mã Ngành ", "Thông báo");}
tb_manganh.Text = null;
tb_tennganh.Text = null;
}
Hình
Trang 71Giao di n b ng N p h c phí c a sinh viên
+
Hình
Trang 72T o truy v n cho Form N p h c phí c a sinh viên
join sv in Sinhviens on k.Mã_l p equals sv.Mã_l pjoin n in dn on sv.Mã_SV equals n.Mã_SV
group n by new { n.S _phi u, n.Mã_SV, n.Ngày_n p, n.S _ti n, sv.H _tên } into nh
select new { nh.Key.S _phi u, nh.Key.Mã_SV, nh.Key.H _tên, nh.Key.Ngày_n p, nh.Key.S _ti n };
//hi n th toàn b danh sách sinh viên lên b xem
dtg_ket_qua.DataSource = query;
}
Trang 73if (tb_timtheoten.Text != ""){
var svtim = (from k in Sinhvienswhere k.H _tên == tb_timtheoten.Textselect k);
dtg_hotrotimten.DataSource = svtim;
}else{
p h tên Sinh viên ", "Thông báo");
}}
thông
Hình
Trang 74Câu l nh cho Data Grid View c a Form n p h c phí
var masv_tim = dtg_ket_qua.Rows[r].Cells[0].Value.ToString();
var svtim = (from bangnop in db.danops
where bangnop.S _phi u == Convert.ToInt16(masv_tim)select bangnop);
foreach (var kq in svtim)
{
tb_sophieunhap.Text = kq.S _phi u.ToString();
tb_maSV.Text = kq.Mã_SV;
tb_ngaynop.Text = kq.Ngày_n p.ToString();
tb_sotien.Text = kq.S _ti n.ToString();
}
}
Hình
Trang 76var svtim = (from bangnop in db.danops
Hình
Trang 77tb_ngaynop = null;
tb_sophieunhap = null;
tb_sotien = null;
}
Câu l nh cho nút Xóa
private void bt_xoa_Click(object sender, EventArgs e)
{
var svtim = (from bangnop in db.danops
where bangnop.S _phi u == Convert.ToInt16(tb_sophieunhap.Text)select bangnop);
foreach (var sv in svtim)
Hình
Trang 78db.danops.DeleteOnSubmit(sv);
}
db.SubmitChanges();
//hi n th l i d li u c a b ng sinh viên sau khi xóa
var svnew = from bangsv in db.sinhviens
Câu l nh cho nút Tìm ki m kho n thu theo mã sinh viên
private void bt_timkiem_Click(object sender, EventArgs e)
{
Hình
Trang 80Câu l nh cho nút th ng kê sinh p theo ngày
private void bt_thongketheongay_Click(object sender, EventArgs e)
var query = from k in dn
join sv in Sinhviens on k.Mã_SV equals sv.Mã_SVgroup sv by new { k.Ngày_n p } into nh
select new {
Trang 81where k.S _ti n >= Convert.ToInt32(tb_min.Text) && k.S _ti n < Convert.ToInt32(tb_max.Text)
group sv by new { k.S _ti n, k.Mã_SV, sv.H _tên, k.S _phi u, k.Ngày_n p } into nh
select new{
nh.Key.Mã_SV,nh.Key.H _tên,nh.Key.Ngày_n p,nh.Key.S _phi u,nh.Key.S _ti n};
Trang 82Hình Tìm ki
Trang 83b) Giao di n Form sinh viên
Giao di n Thêm, s a, xóa, tìm ki m và th ng kê sinh viên
Hình
Trang 84C p nh t sinh viên
Trang 85Tìm ki m sinh viên theo mã sinh viên
Hình 3.4
Hình 3.5
Trang 86L y thông tin sinh viên t ListBox
Hình 3.6
Trang 87Tìm ki m l p theo mã l p
Hình 3.8
Hình 3.9
Trang 88L y thông tin l p t ListBox
Hình 3.10
Trang 89Tìm ki m ngành theo mã ngành
Hình 3.12
Hình 3.13
Trang 90L y thông tin l p t ListBox
e) Giao di n Form N p h c phí
Giao di n Form n p h c phí
Hình 3.14
Trang 91Tra c u tên sinh viên
Hình 3.17 Hình 3.16
Trang 92Giao di n Thêm, s a, xóa, tìm ki m và th ng kê n p h c phí
C p nh t phi u thu
Hình 3.18
Trang 93Th p h c phí theo ngày
Hình 3.20
Hình 3.21
Trang 943.2 Nh n
Gi m b t các câu l nh th Tùy bi n các câu l nh SELECT, INSERT, DELETE, UPDATE d dàng
Rút ng c th i gian th c thi các câu l nh trên SQL.
Trang 96-TÀI LI U THAM KH O
[1] http://www.sqltolinq.com/
[2] https://www.tutorialspoint.com/linq/linq_sql.htm[3].https://namdh.wordpress.com/2008/12/04/linq-book/[4].https://goo.gl/j3wmFf