2. Hệ thống bài cũ
Tìm hiểu ADO.NET Data Services và REST trên
SharePoint
Tìm hiểu các thủ tục thao tác dữ liệu SharePoint sử dụng
ADO.NET Data Services
Quản lý dữ liệu SharePoint 2
3. Nội dung bài học
Tìm hiểu Events (sự kiện) trong SharePoint 2010
Truy vấn dữ liệu sử dụng CAML
Truy vấn dữ liệu sử dụng LINQ to SharePoint
Quản lý dữ liệu SharePoint 3
4. Sự kiện trong SharePoint
Sự kiện (Event) trong SharePoint là Microsoft .NET
assembly chứa một hoặc nhiều lớp xử lý sự kiện xảy ra
trên SharePoint
Ngăn chặn việc xóa công
việc khi chưa hoàn
thành
Quản lý dữ liệu SharePoint 4
Giám sát mọi thay đổi
liên quan đến công việc
Điều chỉnh quy trình xử
lý khi một công việc có
độ ưu tiên thay đổi đến
mức cao
Ngăn chặn việc xóa một
trường dữ liệu khỏi List
5. Before Event (Synchronous)
Được đặt tên với kết thúc là …ing
Vd: ItemAdding
Sự kiện này xảy ra trước khi sự kiện trên SharePoint
thực thi và trước khi SharePoint lưu dữ liệu xuống CSDL
Hỗ trợ cơ chế từ chối thực thi thông qua e.Cancel = true
Thường dùng để phê chuẩn dữ liệu trên SharePoint
Được đặt tên với kết thúc là …ing
Vd: ItemAdding
Sự kiện này xảy ra trước khi sự kiện trên SharePoint
thực thi và trước khi SharePoint lưu dữ liệu xuống CSDL
Hỗ trợ cơ chế từ chối thực thi thông qua e.Cancel = true
Thường dùng để phê chuẩn dữ liệu trên SharePoint
Quản lý dữ liệu SharePoint 5
6. Before Event (Synchronous)
Synchronous (đồng bộ) Event:
Là sự kiện trên SharePoint mà được thực thi ngay khi và
trong cùng một thread (luồng hay tiến trình) với hành
động gây nên sự kiện đó
Toàn bộ Before event là Synchronous event.
Quản lý dữ liệu SharePoint 6
7. After Event (Asynchronous)
Được đặt tên với kết thúc là …ed
Vd: ItemAdded
Sự kiện này xảy ra sau khi sự kiện trên SharePoint đã
thực thi và dữ liệu đã được ghi xuống CSDL
Không hỗ trợ cơ chế từ chối sự kiện
Việc thực thi sự kiện này là không đồng bộ
Được đặt tên với kết thúc là …ed
Vd: ItemAdded
Sự kiện này xảy ra sau khi sự kiện trên SharePoint đã
thực thi và dữ liệu đã được ghi xuống CSDL
Không hỗ trợ cơ chế từ chối sự kiện
Việc thực thi sự kiện này là không đồng bộ
Quản lý dữ liệu SharePoint 7
8. After Event (Asynchronous)
Asynchronous (không đồng bộ) Event
Là sự kiện trên SharePoint mà được thực thi trên một
thread (luồng hay tiến trình) khác với hành động gây nên
sự kiện đó và việc thực thi này có thể xảy ra sau một thời
gian so với hành động gây nên sự kiện.
Asynchronous (không đồng bộ) Event
Là sự kiện trên SharePoint mà được thực thi trên một
thread (luồng hay tiến trình) khác với hành động gây nên
sự kiện đó và việc thực thi này có thể xảy ra sau một thời
gian so với hành động gây nên sự kiện.
Quản lý dữ liệu SharePoint 8
9. Sự kiện trong SharePoint 2010
Event Host: Các đối tượng trên SharePoint có thể viết sự
kiện do người dùng định nghĩa bao gồm
Site Collections:
Bao gồm các sự kiện: Xóa site collection
Sites:
Bao gồm các sự kiện: Tạo, xóa, thay đổi URL của site…
Lists:
Bao gồm các sự kiện: Tạo, xóa, nhận email…của List hay
tạo, sửa, xóa, check-in, check-out…của List item
Workflows:
Bao gồm các sự kiện: Khởi động, hoàn thành, tạm dừng
workflow…
Event Host: Các đối tượng trên SharePoint có thể viết sự
kiện do người dùng định nghĩa bao gồm
Site Collections:
Bao gồm các sự kiện: Xóa site collection
Sites:
Bao gồm các sự kiện: Tạo, xóa, thay đổi URL của site…
Lists:
Bao gồm các sự kiện: Tạo, xóa, nhận email…của List hay
tạo, sửa, xóa, check-in, check-out…của List item
Workflows:
Bao gồm các sự kiện: Khởi động, hoàn thành, tạm dừng
workflow…
Quản lý dữ liệu SharePoint 9
10. Các loại sự kiện trong
SharePoint 2010
List Events:
Các sự kiện xảy ra cho List:
List Item Events:
Các sự kiện xảy ra đối với item trong list hay document
trong document library
List Email Events
Các sẽ kiện xảy ra đối với quá trình nhận email của list
Web Events
Các sự kiện xảy ra đối với site
List Workflow Events
Các sự kiện xảy ra đối với Workflow
List Events:
Các sự kiện xảy ra cho List:
List Item Events:
Các sự kiện xảy ra đối với item trong list hay document
trong document library
List Email Events
Các sẽ kiện xảy ra đối với quá trình nhận email của list
Web Events
Các sự kiện xảy ra đối với site
List Workflow Events
Các sự kiện xảy ra đối với Workflow
Quản lý dữ liệu SharePoint 10
Tham khảo: http://msdn.microsoft.com/en-us/library/gg749858.aspx
14. Receivers element
Attribute Mô tả
ListTemplateId Chỉ ra Event sẽ áp dụng cho loại List nào
ListTemplateOwner Tùy chọn
ListUrl Chỉ ra URL của list mà Event sẽ áp dụng
cho
Quản lý dữ liệu SharePoint 14
Chỉ ra URL của list mà Event sẽ áp dụng
cho
RootWebOnly Tùy chọn kiểu Boolean. True nếu Event
chỉ áp dụng cho Root Web
Scope Phạm vi triển khai Event. Có thể là
- Site: Áp dụng cho toàn Site Collection
- Web: Chỉ áp dụng cho Web site
Tham khảo: http://msdn.microsoft.com/en-us/library/ms431081.aspx
17. Truy vấn CAML
CAML (Collaborative Application Markup Language): là
một ngôn ngữ dựa trên XML được sử dụng trong
SharePoint để định nghĩa các trường dữ liệu (fields) hay
các View được sử dụng trên SharePoint List và Site
CAML cũng được sử dụng để truy vấn dữ liệu trên
SharePoint
CAML (Collaborative Application Markup Language): là
một ngôn ngữ dựa trên XML được sử dụng trong
SharePoint để định nghĩa các trường dữ liệu (fields) hay
các View được sử dụng trên SharePoint List và Site
CAML cũng được sử dụng để truy vấn dữ liệu trên
SharePoint
Quản lý dữ liệu SharePoint 17
18. Các thành phần trong
truy vấn CAML
Thành phần Mô tả
And Nhóm nhiều điều kiện
BeginsWith Tìm kiếm chuỗi ký tự mà bắt đầu với
Contains Tìm kiếm chuỗi có chứa
Eq Toán từ so sánh bằng
FieldRef Tham chiếu tới một FieldFieldRef Tham chiếu tới một Field
Geq Lớn hơn hoặc bằng
GroupBy Nhóm kết quả nhận được
Gt Lớn hơn
IsNotNull Không được rỗng
IsNull Rỗng
Quản lý dữ liệu SharePoint 18
Tham khảo: http://msdn.microsoft.com/en-us/library/ms467521.aspx
19. Các thành phần trong
truy vấn CAML
Thành phần Mô tả
Leq Nhỏ hơn hoặc bằng
Lt Nhỏ hơn
Neq Không bằng
Now Thời gian hiện tại
Quản lý dữ liệu SharePoint 19
Now Thời gian hiện tại
Or Hoặc
OrderBy Sắp xếp kết quả
Today Ngày hiện tại
TodayIso Ngày hiện tại với định dạng ISO
Where Lọc
Tham khảo: http://msdn.microsoft.com/en-us/library/ms467521.aspx
22. Truy vấn LINQ to SharePoint
LINQ to SharePoint Provider được định nghĩa trong
namespace Microsoft.SharePoint.Linq.
SharePoint thực hiện việc chuyển truy vấn dưới dạng
LINQ sang truy vấn dưới dạng CAML trước khi thực thi.
LINQ to SharePoint là một cách thức để truy vấn dữ liệu
SharePoint mà không phải sử dụng CAML.
LINQ to SharePoint Provider được định nghĩa trong
namespace Microsoft.SharePoint.Linq.
SharePoint thực hiện việc chuyển truy vấn dưới dạng
LINQ sang truy vấn dưới dạng CAML trước khi thực thi.
LINQ to SharePoint là một cách thức để truy vấn dữ liệu
SharePoint mà không phải sử dụng CAML.
Quản lý dữ liệu SharePoint 22
23. Truy vấn LINQ to SharePoint
Xây dựng dựa trên nền tảng và cú pháp LINQ (tương tự
như LINQ to SQL hay LINQ to Object trong Microsoft
.NET framework), dành riêng để truy vấn dữ liệu
SharePoint
Chỉ hoạt động cho các ứng dụng Server-side (phía
server)
Để truy vấn LINQ dữ liệu SharePoint từ phía Client sử
dụng ADO.NET Data Services
Xây dựng dựa trên nền tảng và cú pháp LINQ (tương tự
như LINQ to SQL hay LINQ to Object trong Microsoft
.NET framework), dành riêng để truy vấn dữ liệu
SharePoint
Chỉ hoạt động cho các ứng dụng Server-side (phía
server)
Để truy vấn LINQ dữ liệu SharePoint từ phía Client sử
dụng ADO.NET Data Services
Quản lý dữ liệu SharePoint 23
24. Sử dụng LINQ to SharePoint
Tạo các lớp
thực thể
Tạo
DataContext
Viết truy
vấn
Quản lý dữ liệu SharePoint 24
Tạo các lớp
thực thể
Tạo
DataContext
Viết truy
vấn
25. Tạo các lớp thực thể
Tự động tạo các lớp thực thể tương ứng với các
Lists/Libraries trên SharePoint sử dụng công cụ
SPMetal.exe
spmetal /web:<url> /code:Projects.cs
Tự động tạo các lớp cho một hoặc nhiều List
Tự động tạo đối tượng DataContext
Tự động tạo các lớp thực thể tương ứng với các
Lists/Libraries trên SharePoint sử dụng công cụ
SPMetal.exe
spmetal /web:<url> /code:Projects.cs
Tự động tạo các lớp cho một hoặc nhiều List
Tự động tạo đối tượng DataContext
Quản lý dữ liệu SharePoint 25
26. Tạo các lớp thực thể
Add Reference tới Microsoft.SharePoint.Linq.dll
Thêm mã nguồn của Entity được sinh ra từ công cụ
SPMetal vào Visual Studio Project
[ContentTypeAttribute(Name="Announcement", Id="0x0104")]
public partial class Announcement : Item {
[ColumnAttribute(Name="Body", Storage="_body", FieldType="Note")]
public string Body {
get { return this._body; }
set {
if ((value != this._body)) {
this.OnPropertyChanging("Body", this._body);
this._body = value; this.OnPropertyChanged("Body");
}
}
}
Quản lý dữ liệu SharePoint 26
[ContentTypeAttribute(Name="Announcement", Id="0x0104")]
public partial class Announcement : Item {
[ColumnAttribute(Name="Body", Storage="_body", FieldType="Note")]
public string Body {
get { return this._body; }
set {
if ((value != this._body)) {
this.OnPropertyChanging("Body", this._body);
this._body = value; this.OnPropertyChanged("Body");
}
}
}
27. Tạo đối tượng DataContext
Sử dụng các lớp Entities
Sử dụng đối tượng DataContext để truy cập tới các
Entity
public partial class Lab05DataContext : DataContext {
…
public Lab05DataContext(string requestUrl)
: base(requestUrl)
{
this.OnCreated();
}
…
}
Quản lý dữ liệu SharePoint 27
public partial class Lab05DataContext : DataContext {
…
public Lab05DataContext(string requestUrl)
: base(requestUrl)
{
this.OnCreated();
}
…
}
28. List có quan hệ
Có thể thực hiện truy vấn chéo giữa các List có quan hệ
Sử dụng thuộc tính Association để khai báo quan hệ giữa
các list (Entity)
[ContentTypeAttribute(Name="Employees", Id="0x0104")]
public partial class Employees : Item {
[AssociationAttribute(Name="Body",
Storage="_project",
MultivalueType=AssociationType.Single
List=“Projects")]
public string Project {
get {…}
set {…}
}
Quản lý dữ liệu SharePoint 28
[ContentTypeAttribute(Name="Employees", Id="0x0104")]
public partial class Employees : Item {
[AssociationAttribute(Name="Body",
Storage="_project",
MultivalueType=AssociationType.Single
List=“Projects")]
public string Project {
get {…}
set {…}
}
29. List có quan hệ
Truy vấn chéo giữa các list có quan hệ sử dụng cú pháp
LINQ
Ví dụ: List Employees có quan hệ với List Project
var qw = from emp in dc.Employees
where emp.Project.DueDate < DateTime.Now.AddYears(5)
orderby emp.Project.DueDate
select emp;
Quản lý dữ liệu SharePoint 29
var qw = from emp in dc.Employees
where emp.Project.DueDate < DateTime.Now.AddYears(5)
orderby emp.Project.DueDate
select emp;
30. Sửa đổi dữ liệu
Các thay đổi đối với các đối tượng Entity (List item…)
được kiểm soát bởi LINQ Provider.
Để thực hiện thay đổi, gọi phương thức
SubmitChanges()
Quản lý dữ liệu SharePoint 30
31. Sửa đổi dữ liệu
// Khởi tạo đối tượng DataContext
DataContext data = new DataContext(SPContext.Current.Web.Url);
// Lấy ra đối tượng Customers list
EntityList<Customer> Customers
= data.GetList<Customer>("Customers");
// Tạo mới một đối tượng Customer
Customer newCustomer = new Customer()
{ CustomerId=36, City="Madrid" };
// Đánh dấu đối tượng này sẽ được thêm vào trong lần Submit tới
Customers.InsertOnSubmit(newCustomer);
// Submit toàn bộ thay đổi
data.SubmitChanges();
Quản lý dữ liệu SharePoint 31
// Khởi tạo đối tượng DataContext
DataContext data = new DataContext(SPContext.Current.Web.Url);
// Lấy ra đối tượng Customers list
EntityList<Customer> Customers
= data.GetList<Customer>("Customers");
// Tạo mới một đối tượng Customer
Customer newCustomer = new Customer()
{ CustomerId=36, City="Madrid" };
// Đánh dấu đối tượng này sẽ được thêm vào trong lần Submit tới
Customers.InsertOnSubmit(newCustomer);
// Submit toàn bộ thay đổi
data.SubmitChanges();
32. DEMO
Demo:
Ứng dụng Console sử dụng LINQ to SharePoint Provider
để truy vấn dữ liệu SharePoint
Quản lý dữ liệu SharePoint 32
33. Tổng kết bài học
Chúng ta có thể viết các Event để xử lý các sự kiện được
thực thi trên SharePoint
Có hai loại Event trên SharePoint bao gồm
Before event
After event
CAML được sử dụng như là ngôn ngữ truy vấn dữ liệu
SharePoint
Chúng ta có thể viết các Event để xử lý các sự kiện được
thực thi trên SharePoint
Có hai loại Event trên SharePoint bao gồm
Before event
After event
CAML được sử dụng như là ngôn ngữ truy vấn dữ liệu
SharePoint
Quản lý dữ liệu SharePoint 33
34. Tổng kết bài học
Ngoài việc sử dụng CAML chúng ta có thể sử dụng LINQ
to SharePoint để truy vấn dữ liệu SharePoint trên môi
trường server.
DataContext là đối tượng trung tâm trong LINQ to
SharePoint để truy vấn dữ liệu
Quản lý dữ liệu SharePoint 34