Silverlight 2 Tutorial: Hiển Thị SQL Database Data Trong Một DataGrid Sử Dụng LINQ và WCF
Tuesday, April 8, 2008 9:38:40 AM
Trong những bài viết trước, chúng ta đã tìm hiểu một số kiến thức về Layout Controls và điều khiển sự kiện trong Silverlight 2.Trong bài viết này chúng ta sẽ tìm hiểu về cách sử dụng DataBinding để liên kết dữ liệu sử dụng SQL SERVER.Có một số kỹ năng mới sẽ được trình bày trong ứng dụng như:
+ Tạo kết nối tới một WCF Web Service.
+ Sử dụng LINQ để truy vấn và rút trích dữ liệu mà một ứng dụng có thể dùng được.
+ Sử dụng điều khiển DataGrid cho việc hiển thị dữ liệu.
+ Tạo kết nối tới một WCF Web Service.
+ Sử dụng LINQ để truy vấn và rút trích dữ liệu mà một ứng dụng có thể dùng được.
+ Sử dụng điều khiển DataGrid cho việc hiển thị dữ liệu.
Mở máy và bắt đầu công việc Để bắt đầu công việc, chúng ta sẽ tao một project với tên gọi SQLData, nhưng phải đảm bảo Project type là Web Application Project với mục đích tạo ra một Silverlight project cũng như một Server project để có thể tạo một WCF Web Service (cho việc kết nối tới csdl).
Visual Studio 2008 sẽ tạo 2 project bên trong một solution.
Solution và project đầu tiên có tên là SQLData. Trong đó Project đầu tiên là một ứng dụng Silverlight có chứa các file giống với các file mà các bạn đã thấy trong các bài viết trước.
Project thứ 2, SQLData_Web được tạo cho bạn như một môi trường test cho Silverlight project và nó có 3 điểm tiếp nhận:
- Default.aspx
- SQLDataTestPage.aspx
- SQLDataTestPage.html
<form id="form1" runat="server" style="height:100%;">
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<div style="height:100%;">
<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SQLData.xap"
Version="2.0" Width="100%" Height="100%" />
</div>
</form>
LINQ to SQL
Để bắt đầu, bạn nhấp chuột phải trên server project và chọn Add, và sau đó chọn LinqToSql Classes template. Chú ý rằng, phần mở rộng bên dưới cửa sổ xuất hiện dòng chữ với nội dung "LINQ to SQL classes mapped to relational objects."
Khi của sổ Trình thiết kế Mối quan hệ Đối tượng mở, bạn mở rộng Server Explorer và tìm tới csdl muốn thực thi trên đó (trong trường hợp này là AdventureWorks). Mở rộng node Table và kéo bảng Customer vào bên trên khung DataClasses1.dbml Designer.
Tạo LINQ class Serializable
Một lớp LINQ sẽ được tạo ra tương ứng với bảng Customer và nó mặc định không được serializable. Nhưng để nó có thể sử dụng trong một web service, chúng ta cần thay đổi nó. Bạn nhấn trên bề mặt thiết kế để đưa ra cửa sổ thuộc tính của lớp entity, sau đó thiết lập Serilaization từ None tới Unidirectional.
Tạo Web Service
Bạn đã tạo lớp LINQ (mặc dù chưa có câu truy vấn nào) đầu tiên để web service (và Intellisense) sẽ biết tới lớp Customer và các thành viên của nó.
Nhấp chuột phải trên test project và chọn Add New và từ templates chọn WCF Service:
Kết quả là 3 file mới được tạo ra để giữ service tương tác cho WCF web service của bạn:
Mở file đầu tiên (IService1.cs) mà nó có chứa một đoạn mã quy ước được tạo ra bởi Visual Studio 2008.
public interface IService1
{
[OperationContract]
void DoWork();
}
Chúng ta có thể thay thế quy ước "dummy" với bất kỳ quy ước nào mà chúng ta muốn web service cung cấp. Mục đích của bài viết này là muốn quy ước để web service của chúng ta sẽ trả về một danh sách các đối tượng đã quy định cho một chuỗi để miêu tả sự bắt đầu của một customer’s last name.
Như vậy, chúng ta sẽ sửa đổi phương thức từ việc trả về kiểu void, nó sẽ trả về List<Customer>. Tuy nhiên, ngay khi bạn bắt đầu thay đổi, Intellisense sẽ có thể giúp đỡ bạn trong việc lựa chọn kiểu trả về, đặc trưng bởi vì chúng ta đã tạo kiểu này trong lớp LINQ đã được định nghĩa từ trước.
Quy ước cho một phương thức là trả về một tập hợp foo lấy về một bar với tên gọi GetFoosByBar. Như vậy, chúng ta sẽ đặt tên là GetCustomersByLastName.
public interface IService1
{
[OperationContract]
List<Customer> GetCustomersByLastName(string lastName);
}
Bạn phải đảm bảo thay đổi sự thực thi trong file .cs. Nhưng tại sao lại khó khăn như vậy? khi bạn lấy file .cs, chỉ cần click trên interface và một thẻ smart sẽ xuất hiện. Mở tag và nó sẽ đưa ra để tạo sự thực thi khung viết mã cho bạn.
Loại bỏ phương thức DoWork và thay thế nó bằng GetCustomersByLastName
Throw away the DoWork method and fill in the GetCustomersByLastName with the LINQ query,






Unregistered user # Tuesday, November 11, 2008 9:49:48 AM
dragontl21 # Saturday, June 27, 2009 6:12:36 AM
Unregistered user # Sunday, August 23, 2009 4:46:27 PM
Unregistered user # Sunday, February 21, 2010 6:01:47 AM