You are on page 1of 110

8/9/2014 1

LINQ
N-HIBERNATE
NET-TIER
Nhm D
GVLT: Th.S Lm Quang V
GVHD: Nguyn Huy Khnh
8/9/2014 2
Gii thiu v ORM
Object Relational Mapping (ORM, O/RM,
O/R mapping)
L mt k thut lp trnh chuyn i d
liu gia cc h thng khng tng thch
trong c s d liu quan h v cc ngn
ng lp trnh hng i tng.
8/9/2014 3
LINQ
Nhm D1 + D2
GVLT: Th.S Lm Quang V
GVHD: Nguyn Huy Khnh
8/9/2014 4
Thnh vin nhm
Nhm D1:
Phm Ngc Ph 0612352
Phan V Lim 0612207
Thi Ngn Phng 0612358
Nguyn Thnh Lun 0612234
L Th M Phng 0612339
Nhm D2:
L Thnh Dng 0512103
Ha Ch Chu 0512080
Bi Vit Dng 0512101
Trng H Giang 0512110
Nguyn Phc Hin 0512113

8/9/2014 5
Gii thiu v LINQ
Li ch s dng LINQ
u, khuyt im ca LINQ
Hnh nh Demo 4
1
2
3
Ni dung chnh
8/9/2014 6
Gii thiu v LINQ
1
LINQ
8/9/2014 7
Gii thiu v LINQ
LINQ (Language Integrated Query) Ngn ng
truy vn tch hp - Ngn ng thng nht cch
thc truy xut d liu trong .NET.

c pht trin t nm 2003, v c cng b
ti Hi ngh Microsoft Professional Developers
vo 2005 do Anders Hejlsberg v nhm ca ng
trnh by.

c tch hp sn trong Visual Studio 2008
(.NET 3.5).
8/9/2014 8
Gii thiu v LINQ
LINQ c phn thnh 3 loi:
LINQ to Objects
LINQ to XML
LINQ to SQL
8/9/2014 9
Gii thiu v LINQ
Li ch s dng LINQ
u, khuyt im ca LINQ
Hnh nh Demo 4
1
2
3
LINQ
8/9/2014 10
Li ch s dng LINQ
2
LINQ
8/9/2014 11
Li ch s dng LINQ
N cung cp mt cch chung truy xut d
liu t bt k ngun no vi cng mt c php.

Gip thc hin truy vn mt cch d dng hn.

c tch hp nh c php ca ngn ng lp
trnh.

8/9/2014 12
Gii thiu v LINQ
Li ch s dng LINQ
u, khuyt im ca LINQ
Hnh nh Demo 4
1
2
3
LINQ
8/9/2014 13
u, khuyt im ca LINQ 3
LINQ
8/9/2014 14
u, khuyt im ca LINQ
u im:
Lp trnh vi c s d liu mt cch d
dng.
Khng cn bit nhiu ngn ng truy vn
khc m vn c th lm vic.
n gin ha vic vit truy vn.

Khuyt im:
L thuc vo mi trng lp trnh .NET
8/9/2014 15
Gii thiu v LINQ
Li ch s dng LINQ
u, khuyt im ca LINQ
Hnh nh Demo LINQ to SQL 4
1
2
3
LINQ
8/9/2014 16
Hnh nh Demo LINQ to SQL 4
LINQ
8/9/2014 17
Thm CSDL vo Project

8/9/2014 18
Thm CSDL vo Project

8/9/2014 19
Thm CSDL vo Project
8/9/2014 20
Thm lp LINQ to SQL

8/9/2014 21
Thm lp LINQ to SQL

8/9/2014 22
Thm lp LINQ to SQL

8/9/2014 23
Thm lp LINQ to SQL

8/9/2014 24
Thm lp LINQ to SQL

8/9/2014 25
Cu trc qun l ca LINQ
to SQL

8/9/2014 26
Thm, xa, sa d liu

8/9/2014 27
Load d liu ln Form
Load tt c thng tin cc loi sch bng
LoaiSach trong c s d liu ln form.
8/9/2014 28
Thm d liu
Thm mt loi sch mi vo bng LoaiSach
trong c s d liu.
8/9/2014 29
Cp nht d liu
Cp nht thng tin loi sch vo bng LoaiSach
trong c s d liu.
8/9/2014 30
Xa d liu
Xa mt loi sch ra khi bng LoaiSach trong
c s d liu.
8/9/2014 31
Truy vn trn mt bng
Tra cu thng tin loi sch theo m loi
sch.
8/9/2014 32
Truy vn trn nhiu bng
Ly thng tin tn sch, tn loi sch, tc
gi, tn nh xut bn ca tt c cc sch.
8/9/2014 33
S dng distinct
Ly tt c tn loi sch trong bng
LoaiSach. Mi tn ch xut hin 1 ln.
8/9/2014 34
S dng Order By
Sp xp tn cc loi sch trong bng
LoaiSach theo th t tng dn.
8/9/2014 35
S dng Group By
ng vi m loi sch l 1, m s lng
sch theo tn sch.
8/9/2014 36
S dng join
Ly thng tin tn sch, tn loi sch, tc
gi ca tt c cc sch.
8/9/2014 37
Tham kho
LINQ for Visual C Sharp 2008 Jun 2008
Fabio Claudio Ferracchiati




Professional LINQ - Scott Klein
8/9/2014 38
NHibernate
Nhm D3 + D5
GVLT: Th.S Lm Quang V
GVHD: Nguyn Huy Khnh
8/9/2014 39
Thnh vin nhm
Nhm D3:
Ng Minh Nht 0612322
V Quang Nht 0612318
L Nguyn Hoi Nam 0612276
Hunh Cng Tn 0612534
Nguyn Vn Nht 0612314
Nhm D5:
Trn Nguyn Hng 0412310
L Vn Thng 0512335
Trng Hong Linh 0412315
Hunh Minh Hong 0512126
Tn Long Thnh 0512344

8/9/2014 40
Gii thiu
S dng NHibernate
u, khuyt im 4
1
2
Ni dung chnh
8/9/2014 41
Gii thiu
Hibernate: l Framework m ngun m h
tr truy xut CSDL cho cc ng dng
hng i tng s dng CSDL quan h
NHibernate: dnh cho ng dng .NET
L cc DLL cha cc lp i tng

8/9/2014 42
NHibernate trong m hnh 3 lp:


Gii thiu
8/9/2014 43
Gii thiu
NHiberate c nhim v chuyn i d liu
gia ng dng v CSDL:
c
Ghi
nh x CSDL vo NHibernate da vo tp tin
hibernate.cfg.xml
nh x gia lp v bng da vo tp tin cu
hnh *.hbm.xml


8/9/2014 44
Gii thiu
Lch s:
- c bt u bi: Tom Barrett
- 2005, JBoss, Inc. (thuc Red Hat) u t
pht trin da n ny
- 2006 JBoss ngng h tr
- Hin ti, NHibernate c pht trin chung
- www.hibernate.com/343.html
8/9/2014 45
Gii thiu
Lch s: cc phin bn
NHibernate 1.2.1: 11/2007, h tr .NET 2.0
NHibernate 2.1: ang c pht trin
NHibernate 3.0: phin bn d kin dnh cho
.Net 3.5

8/9/2014 46
Gii thiu
S dng NHibernate
u, khuyt im 4
1
2
Ni dung chnh
8/9/2014 47
S dng NHibernate
Ci t
To Project, add reference
To CSDL v cc lp i tng
To cc tp tin cu hnh
Truy xut d liu

8/9/2014 48
S dng NHibernate
Ci t
To Project, add reference
To CSDL v cc lp i tng
To cc tp tin cu hnh
Truy xut d liu

8/9/2014 49
Ci t
Download NHibernate ti:
www.hibernate.com/6.html
Chp th mc cha DLL vo th mc cha
Project
8/9/2014 50
S dng NHibernate
Ci t
To Project, add reference
To CSDL v cc lp i tng
To cc tp tin cu hnh
Truy xut d liu

8/9/2014 51
To Project, add reference
To Project, Add reference, Browse n th
mc cha cc DLL ca NHibernate
8/9/2014 52
S dng NHibernate
Ci t
To Project, add reference
To CSDL v cc lp i tng
To cc tp tin cu hnh
Truy xut d liu

8/9/2014 53
To CSDL v cc
lp i tng
To CSDL quan h
8/9/2014 54
To CSDL v cc lp
i tng
To cc lp i tng tng ng vi cc
bng ca CSDL
8/9/2014 55
S dng NHibernate
Ci t
To Project, add reference
To CSDL v cc lp i tng
To cc tp tin cu hnh
Truy xut d liu

8/9/2014 56
To cc tp tin cu hnh
To tp tin cu hnh hibernate.cfg.xml
Gip cho NHibernate bit cn phi lin kt vi CSDL no
<?xml version="1.0" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory>
<property
name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.JetDriver.JetDialect, NHibernate.JetDriver</property>
<property name="connection.driver_class">NHibernate.JetDriver.JetDriver,
NHibernate.JetDriver</property>
<property name="connection.connection_string">Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=QuanLyThuVien.mdb</property>
</session-factory>
</hibernate-configuration>`

8/9/2014 57
To cc tp tin cu hnh
To tp tin cu hnh hibernate.cfg.xml
<property name="connection.connection_string>
Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=QuanLyThuVien.mdb</property>

- Chui kt ni n CSDL
8/9/2014 58
To cc tp tin cu hnh
To cc tp tin nh x *.hbm.xml
Mi lp c mt tp tin nh x tng ng:
[TenLop].hbm.xml

8/9/2014 59
To cc tp tin cu hnh
To cc tp tin nh x *.hbm.xml


<class name="DTO.SachDto,DTO" table="Sach>
<id name="MSach" column="MSach" type="int>
<generator class="increment" />
</id>
<property name="TenSach" column="TenSach"
type="String" />
8/9/2014 60
S dng NHibernate
Ci t
To Project, add reference
To CSDL v cc lp i tng
To cc tp tin cu hnh
Truy xut d liu

8/9/2014 61
Truy xut d liu
nh x lp i tng v CSDL
Kt ni vi CSDL
Thc hin cc thao tc vi CSDL
ng kt ni vi CSDL
8/9/2014 62
Truy xut d liu
nh x lp i tng v CSDL
Kt ni vi CSDL
Thc hin cc thao tc vi CSDL
ng kt ni vi CSDL
8/9/2014 63
nh x lp i tng
v CSDL




Load file cu hnh v file nh x, thc hin
nh x v tr v i tng ISessionFactory.
8/9/2014 64
Truy xut d liu
nh x lp i tng v CSDL
Kt ni vi CSDL
Thc hin cc thao tc vi CSDL
ng kt ni vi CSDL
8/9/2014 65
Kt ni CSDL




i tng session gi kt ni vi CSDL v
thc hin cc thao tc c ghi trn CSDL
8/9/2014 66
Truy xut d liu
nh x lp i tng v CSDL
Kt ni vi CSDL
Thc hin cc thao tc vi CSDL
ng kt ni vi CSDL
8/9/2014 67
Thc hin cc thao tc
vi CSDL




8/9/2014 68
Thc hin cc thao tc
vi CSDL select
IList lst = session.Find(from
DTO.DocGiaDto);
// c tt c cc record trong bng
DocGia
DocGiaDto dg =
session.Load<DocGiaDto>(maDG);
dg.HoTen = NMN;
// Ly ra mt record t bng DocGia
8/9/2014 69
Thc hin cc thao tc
vi CSDL insert
DocGiaDto dg = new DocGiaDto();
dg.HoTen = NMN;
dg.GioiTinh = 1;
//
session.Save(dg);
// Lu c gi dg vo bng DocGia
8/9/2014 70
Thc hin cc thao tc
vi CSDL delete
DocGiaDto dg =
session.Load<DocGiaDto>(maDg);
session.Delete(dg);
// Xa c gi dg khi bng
DocGia
8/9/2014 71
Thc hin cc thao tc
vi CSDL update
DocGiaDto dg =
session.Load<DocGiaDto>(maDg);
dg.HoTen = Cp nht;
session.Update(dg);
// Cp nht thng tin c gi dg
8/9/2014 72
Thc hin cc thao tc
vi CSDL SqlQuery
String strSql = select s.TenSach,
ls.TenLoaiSach, s.TacGia from Sach s inner
join LoaiSach ls on s.LoaiSach =
ls.MLoaiSach where s.TrangThai=true
/* Ly v sch (Tn sch, tn loi sch, tc gi) cha
c mn */
ISQLQuery query = session.CreateSQLQuery(strSql);
query.AddScalar(TenSach",NHibernateUtil.String);
query.AddScalar(TenLoaiSach",NHibernateUtil.String);
query.AddScalar(TacGia",NHibernateUtil.String);
IList lst = query.List();
/* lst cha danh sch nhng quyn sch tm c */
8/9/2014 73
Thc hin cc thao tc
vi CSDL SqlQuery

String strSql = select * from DocGia where
HoTen = ?
/* Tm c gi theo tn */
ISQLQuery query =
session.CreateSQLQuery(strSql);
query.SetString(NMN); // Set Parameters
query. AddEntity(typeof(DocGiaDto));
IList lst = query.List();
/* lst cha danh sch c gi c tn NMN*/

8/9/2014 74
Thc hin cc thao tc
vi CSDL

transaction.Commit();
Cp nht cc thay i xung CSDL

transaction.Rollback();
Hy b cc thay i
8/9/2014 75
Truy xut d liu
thng qua NHibernate
nh x lp i tng v CSDL
Kt ni vi CSDL
Thc hin cc thao tc vi CSDL
ng kt ni vi CSDL
8/9/2014 76
ng kt ni vi CSDL

8/9/2014 77
Gii thiu
S dng NHibernate
u, khuyt im 4
1
2
Ni dung chnh
8/9/2014 78
u, khuyt im
u im
H tr nhiu loi c s d liu (multi database
support)
Gim gnh nng vit m ngun giao tip vi c
s d liu
Cung cp nhiu phng thc truy xut CSDL
8/9/2014 79
u, khuyt im
Khuyt im:
Ngi dng NHibernate phi hc cch vit tp tin
mapping.
Vic truy xut CSDL i khi khng ti u, dn n tc
thc thi chm, nh hng performance ca phn mm.
Kh debug phn truy xut c s d liu
Gp khng t kh khn trong khi cu hnh
8/9/2014 80
Tham kho
http://www.hibernate.com
http://en.wikipedia.org/wiki/NHibernate
http://www.codeproject.com/KB/architecture/NHibernateAr
chitecture.aspx
http://www.codeproject.com/KB/database/Nhibernate_Mad
e_Simple.aspx


8/9/2014 81
NET TIER
Nhm D4 + D6
GVLT: Th.S Lm Quang V
GVHD: Nguyn Huy Khnh
8/9/2014 82
Thnh vin nhm
Nhm D4:
Nguyn Hi ng - 0512438
o Duy Minh ng 0512439
Phan Xun nh 0512444
Nguyn L Thanh Tho 0612418
Hunh Thanh Tuyn 0612494
Nhm D6:
Nguyn Thnh Trung 0612468
Hunh Minh Trc 0612482
Nguyn Hu Tr 0612485
V Ngc Yn V 0612584
8/9/2014 83
Gii thiu cng c CodeSmith
Gii thiu netTiers
Demo netTiers 3
1
2
Ni dung chnh
8/9/2014 84
CNG C CODESMITH
Gii thiu
Cng c pht sinh m da trn template
c sn.
H tr ngn ng: C#, VB.NET, Java, T-
SQL, FORTRAN.
C php vit ging ASP.NET.

8/9/2014 85
CNG C CODESMITH
Template l g?
L mt khung mu do ngi dng nh
ngha theo ngn ng ca CodeSmith.
8/9/2014 86
CNG C CODESMITH
STUDIO
Cng c CodeSmith Studio
Gip son tho, bin dch v thc thi mt
template.
H tr son tho nhanh chng ging nh
Visual Studio.Net.

8/9/2014 87
Menu bar
Tool bar
Ca s chnh
Templete
Explorer
Tab
Templetet
Tab Output
8/9/2014 88
CNG C CODESMITH
EXPLORER

Cng c CodeSmith Explorer
Gip pht sinh m t mt template.
T chc, qun l cc th mc cha file
template (cst).

8/9/2014 89
CNG C CODESMITH
EXPLORER
8/9/2014 90
NETTIERS
Gii thiu
L mt tp cc template (ngun m)
dng pht sinh m. Gip n gin ha
vic to mi mt ng dng ch trong vi
pht.
Da trn cng c CodeSmith pht
sinh ra m.
Cung cp cho ngi pht trin 1
framework y pht trin ng
dng.
8/9/2014 91
NETTIERS
Kin trc .netTiers

8/9/2014 92
Demo
Bc 1: Khi ng CODESMITH EXPLORER, m
template nettiers.
Bc 2: Nhp cc thng tin ca d n.
Bc 3: genarate code.
8/9/2014 93 Company Name
8/9/2014 94
8/9/2014 95
Demo
Add >> New item >> Application
Configuration File
Copy ni dung t file:
NetTiers\*.UnitTests\ *.UnitTests.dll.config
Bc 4: Thm project mi vo
cho d n, cu hnh cho project:

8/9/2014 96
Bc 5:
Thit k
giao din

8/9/2014 97
AccountService accountsService = new AccountsService();
//GetAll()
TList<Accounts> accountList = accountsService.GetAll();
//GetPagedl()
TList<Accounts> accountList = accountsService.GetPaged("IsActive = 1
AND AccountName LIKE 'smi%'");
//GetByFk()
TList<Accounts> accountList = accountsService.GetByCustomerId(25);
.
Bc 6: Vit code select, insert,
delete, update d liu

8/9/2014 98
8/9/2014 99
8/9/2014 100
//Insert()
Account accountEntity = new Account();
accountEntity.AccountName = "MyAccountName";
accountEntity.CreatedDate = DateTime.Now;
accountsService.Insert(accountEntity);
8/9/2014 101
//Delete()
bool result = accountsService.Delete(23);
DangKyService dkSer = new DangKyService();
dkSer.Delete(m.Isbn, m.MaDocgia);
8/9/2014 102
//Update()
accountEntity.AccountName = "MyAccountName 2";
accountsService.Update(accountEntity);
CuonSachService csSer = new CuonSachService();
CuonSach cs = csSer.GetByIsbnMaCuonSach(m.Isbn, m.MaCuonsach);
cs.TinhTrang = "Y";
csSer.Update(cs);
8/9/2014 103
Vn select t nhiu
bng d liu
Danh sch cc c gi ang ng k
mn sch, hin th cc thng tin: h tn
c gi, ta sch, ngy gi ng k
8/9/2014 104
8/9/2014 105
Tham Kho
http://patternshare.org/default.aspx/Home.PP.Singleton
http://www.dofactory.com/Patterns/PatternDecorator.aspx
http://www.NetTiers.com
http://docs.nettiers.com/
http://msdn2.microsoft.com/en-us/library/aa480458.aspx

8/9/2014 106
So snh
Ging nhau:
u c c ch ORM

Khc nhau:
LINQ khng phi l 1 ORM tool hon
chnh
Nhibernate l 1 ORM tool.
Net-Tier l 1 ORM tool.

8/9/2014 107
So snh
Khc nhau:
LINQ ch yu l ngn ng truy vn h tr
intellisense, trnh bin dch s check
syntax ca cu truy vn.
Nhibernate c ngn ng truy vn kh gii
hn, khng c intellisense.
Net-Tier khng c ngn ng truy vn d
liu m truy vn c pht sinh t ng.
8/9/2014 108
So snh
Khc nhau:
LINQ ch yu dng cho Microsoft SQL
Server.
Nhibernate c th c dng vi hu ht
bt k h qun tr CSDL no min l cung
cp DB provider.
Net-Tier ch yu dng cho Microsoft SQL
Server, nhng vn c th thao tc vi cc
DBMS khc thng qua loi Generic.
8/9/2014 109
So snh
Khc nhau:
LINQ Closed source.
Nhibernate Open source.
Net-Tier Open source.
8/9/2014 110

You might also like