4. LTUDQL 2
Lo畉i CSDL LINQ to SQL h畛 tr畛
Ch畛 h畛 tr畛 c叩c lo畉i CSDL sau:
Microsoft SQL Server
Microsoft SQL Server Compact (*.sdf)
Microsft SQL Server Database File (*.mdf)
L動u 箪: Khi t畉o report v畛i Crystal Report, Crystal Report ch畛
h畛 tr畛 Microsoft SQL Server, kh担ng k畉t n畛i tr動c ti畉p 動畛c
v畛i *.sdf v *.mdf
. -4- 息HCMUS
5. LTUDQL 2
Th畛c hi畛n 叩nh x畉 ORM
T畉o file TenCSDL.dbml
K辿o t畉t c畉 c叩c b畉ng vo c畛a s畛 Design
C坦 th畛 k辿o c叩c View, Stored Procedure, Function vo c畛a s畛
Design
L動u 箪 khi 達 th畛c hi畛n 叩nh x畉 trong project s畉 xu畉t hi畛n file
app.config. Trong file ny ch畛a chu畛i connectionstring. Khi
em 畛ng d畛ng qua m叩y kh叩c ch畉y ta ch畛 c畉n ch畛nh s畛a gi叩 tr畛
chu畛i connectionstring trong file ny.
. -5- 息HCMUS
6. LTUDQL 2
Kh畛i t畉o 畛i t動畛ng CSDL 達 叩nh x畉
1.Su dung gia tri chuoi connectionstring
trong file app.config
Dim db As New TruongHocDataContext()
2.Khong su dung gia tri chuoi
connectionstring trong file app.config
Dim cnStr As String
cnStr = ..
Dim db As New TruongHocDataContext(cnStr)
. -6- 息HCMUS
7. LTUDQL 2
Truy v畉n d畛 li畛u kh担ng i畛u ki畛n
Public Function LayDanhSachKhachHang() As List(Of
Customer)
Dim db As New NorthwindDataContext()
Dim query = From c In db.Customers
Select c
Return query.ToList()
End Function
. -7- 息HCMUS
8. LTUDQL 2
Truy v畉n d畛 li畛u c坦 i畛u ki畛n
Public Function LayDanhSachKhachHangTheoThanhPho
_
(ByVal tp As String) As List(Of Customer)
Dim db As New NorthwindDataContext()
Dim query = From c In db.Customers
Where c.City = tp
Select c
Return query.ToList()
End Function
. -8- 息HCMUS
9. LTUDQL 2
Truy v畉n d畛 li畛u Ki畛u tr畉 v畛 kh担ng x叩c 畛nh (Anonymous
Type)
Public Function LayDanhThongTinKhachHang() As
IList
Dim db As New NorthwindDataContext()
Dim query = From c In db.Customers
Select c.ContactName, c.Phone
Return query.ToList()
End Function
. -9- 息HCMUS
10. LTUDQL 2
Truy v畉n d畛 li畛u Ki畛u tr畉 v畛 x叩c 畛nh
Public Function LayDanhThongTinKhachHang1() As
List(Of ThongTinKhachHang)
Dim db As New NorthwindDataContext()
Dim query = From c In db.Customers
Select New ThongTinKhachHang With
{.ContactName = c.ContactName, .Phone = c.Phone}
Return query.ToList()
End Function
Ph畉i 畛nh ngh挑a l畛p ThongTinKhachHang c坦 thu畛c t鱈nh
ContactName v Phone
. - 10 - 息HCMUS
11. LTUDQL 2
Truy v畉n d畛 li畛u v畛i distinct
Public Function LayDanhSachThanhPho() As List(Of
String)
Dim db As New NorthwindDataContext()
Dim query = From c In db.Customers
Select c.City
Distinct
Return query.ToList()
End Function
. - 11 - 息HCMUS
12. LTUDQL 2
Truy v畉n v畛i i畛u ki畛n AndAlso, OrElse
Dim q = From p In db.Products
Where p.UnitsInStock <= p.ReorderLevel
AndAlso Not p.Discontinued
Select p
Dim q = From p In db.Products _
Where p.UnitPrice > 10.0# OrElse
p.Discontinued
Select p
. - 12 - 息HCMUS
13. LTUDQL 2
Truy v畉n d嘆ng 畉u ti棚n
Dim shipper As Shipper
shipper = db.Shippers.First()
Dim cust = From c In db.Customers
Where c.CustomerID = "BONAP" Take 1
Dim ord = (From o In db.Orders
Where o.Freight > 10D
Select o).First()
. - 13 - 息HCMUS
15. LTUDQL 2
Insert 1 d嘆ng d畛 li畛u 1-many
Dim newCategory = New Category With
{.CategoryName = "Widgets", .Description = "Widgets are the
customer-facing analogues " & "to sprockets and cogs."}
Dim newProduct = New Product With {.ProductName = "Blue
Widget",.UnitPrice = 34.56#,.Category = newCategory}
db.Categories.InsertOnSubmit(newCategory)
db.SubmitChanges()
. - 15 - 息HCMUS
16. LTUDQL 2
Insert 1 d嘆ng d畛 li畛u many - many
Dim newEmployee = New Employee With {.FirstName = "Kira",
.LastName = "Smith"}
Dim newTerritory = New Territory With {.TerritoryID =
"12345", .TerritoryDescription = "Anytown",
.Region = db.Regions.First()}
Dim newEmployeeTerritory = New EmployeeTerritory
With{.Employee = newEmployee, .Territory = newTerritory}
db.Employees.InsertOnSubmit(newEmployee)
db.Territories.InsertOnSubmit(newTerritory)
db.EmployeeTerritories.InsetOnSubmit(newEmployeeTerritory)
db.SubmitChanges()
. - 16 - 息HCMUS
17. LTUDQL 2
Update 1 d嘆ng d畛 li畛u
Dim cust As Customer
cust = (From c In db.Customers
Where c.CustomerID = "ALFKI"
Select c).First()
cust.ContactTitle = "Vice President"
db.SubmitChanges()
. - 17 - 息HCMUS
18. LTUDQL 2
Update nhi畛u d嘆ng d畛 li畛u
Dim query = From p In db.Products _
Where CInt(p.CategoryID.Value) = 1
Select p
Dim lst As List (of Product)
lst = query.ToList()
For Each item As Product In lst
item.UnitPrice += 1.0
Next
db.SubmitChanges()
. - 18 - 息HCMUS
19. LTUDQL 2
Delete m畛t d嘆ng d畛 li畛u
Dim order As Order_Detail
order = (From c In db.Order_Details _
Where c.OrderID = 10255 AndAlso
c.ProductID = 36
Select c).First()
db.Order_Details.DeleteOnSubmit(order)
db.SubmitChanges()
. - 19 - 息HCMUS
20. LTUDQL 2
Delete nhi畛u d嘆ng d畛 li畛u
Dim orderDetails = _
From o In db.Order_Details _
Where o.Order.CustomerID = "WARTH" AndAlso o.Order.EmployeeID =
3 Select o
Dim order = _
(From o In db.Orders _
Where o.CustomerID = "WARTH" AndAlso o.EmployeeID = 3 _
Select o).First()
For Each od As Order_Detail In orderDetails
db.Order_Details.DeleteOnSubmit(od)
Next
db.Orders.DeleteOnSubmit(order)
db.SubmitChanges()
. - 20 - 息HCMUS
21. LTUDQL 2
D湛ng c叩c stored procedure
'Retrieve products based on adhoc query
Dim products As IEnumerable(Of Product)
products = From p In db.Products
Where p.CategoryID = 1
Select p
'Retrieve products instead using a SPROC method
products = db.GetProductsByCategory(1)
'iterate over result
For Each item As Product In products
'....
Next
. - 21 - 息HCMUS
22. LTUDQL 2
Ph但n trang truy v畉n k畉t qu畉
Public Function LaySanPham(ByVal startRow As
Integer) As IEnumerable(Of Product)
Dim db As New NorthwindDataContext()
'Retrieve products based on adhoc query
Dim products As IEnumerable(Of Product)
products = From p In db.Products
Where p.CategoryID = 1
Select p
Return products.Skip(startRow).Take(10)
End Function
. - 22 - 息HCMUS
23. LTUDQL 2
K畉t b畉ng (join)
Public Function TimKiemHocSinhTheoTenLop(ByVal
tenLop As String) As List (Of HocSinh)
Dim db As New TruongHocDataContext()
Dim query = From hs In db.HocSinhs
Join lh In db.LopHocs On hs.MaLop
Equals lh.Ma
Where lh.Ten = tenLop
Select hs
Return query.ToList()
End Function
. - 23 - 息HCMUS