Hey there! Thanks for dropping by trungbq! Take a look around and grab the RSS feed to lớn stay updated. See you around!

Tổng quan

Trong phần trước, tôi sẽ ra mắt sơ qua về WCF RIA Services thông qua 1 ví dụ tựa “Hello World”. Nó chắc là quá đơn giản dễ dàng và quan yếu thực hiện vào ứng dụng thực tế. Đối với áp dụng thực tiễn, bạn cần phải biết cách làm cố làm sao để thiết lập cấu hình services cùng sử dụng nó sống client ra làm sao. Trong bài viết này, tôi đang đi sâu rộng một ít vào quy trình truy tìm vấn dữ liệu trường đoản cú client. Tôi cũng trở thành lướt qua về quy ước đánh tên cách thức được định nghĩa trong tên miền service, tương tự như cách làm vắt nào để gia công điều đó áp dụng attribute nuốm do theo đúng quy ước. Tôi cũng biến thành lý giải biện pháp cần sử dụng những truy vấn từ client. Cuối thuộc, tôi đang nói về kiểu cách sử dụng dữ liệu trường đoản cú các nguồn tài liệu không giống Entity Framework.Quý Khách đã xem: Wcf ria là gì

Để ban đầu chúng ta nên áp dụng kết quả đang làm cho được từ phần trước. Quý Khách rất có thể download tại đây (khác).

Bạn đang xem: Wcf ria là gì

Download code hoàn chỉnh của bài viết này tại đây (khác).

Cách 1: Thêm tđắm say số mang đến câu tróc nã vấn

Trong nội dung bài viết trước, sau khi được chế tạo dứt, trong tên miền service có một thủ tục truy tìm vấn như thế này:

1: public IQueryable GetTasks() 2: 3: return this.ObjectContext.Tasks; 4: Câu truy tìm vấn này trả về toàn bộ các Task vào database dưới dạng một IQueryable. Nếu bạn có nhu cầu có những tróc nã vấn ví dụ rộng chứ đọng không phải trả về toàn bộ các cái, chúng ta có thể thêm các cách thức truy vấn vấn cụ thể vào tên miền service và nó sẽ tiến hành từ hình thành ở client side. quý khách cũng có thể chọn mẫu mã trả về làIEnumerable, tuy vậy giả dụ những provider dưới (Entity Framework hoặc LINQ khổng lồ SQL) trả vềIQueryable, các bạn cũng buộc phải trả về kiểu IQueryable cầm bởi vì chuyển thứ hạng.

Một ngôi trường hợp thường xuyên gặp là ứng dụng của công ty cho phép người tiêu dùng đem các Task trong một khoảng thời gian. Để cung ứng điều này, chúng ta thêm cách thức sau vào domain name service

public IQueryable GetTasksByStartDate( DateTime lowerDateTimeInclusive sầu, DateTime upperDateTimeInclusive){ return this.ObjectContext.Tasks.Where( t => t.StartDate >= lowerDateTimeInclusive && t.StartDate

Bước 2: Thêm giao diện để thực hiện các truy tìm vấn

Để call những truy hỏi vấn kiếm tìm kiếm nuốm bởi vì gọi GetTasks thời gian Page_Load, bạn phải chỉnh sửa hình ảnh một tí. Msinh sống trang MainPage.xaml, sút size của DataGrid để chừa nơi trống cung cấp hai TextBox với một Button nlỗi dưới đây


*

Đặt tên cho TextBox thứ nhất là lowerDate, TextBox thiết bị nhì là upperDate và Button là searchButton. Nhấp đúp vào button nhằm thêm hàm giải pháp xử lý sự khiếu nại.

Cách 3: Thực thi câu tróc nã vấn từ bỏ client thông qua DomainContext

Nlỗi đã trình làng trong phần 1, DomainContext là bạn dạng sao của DomainService được tự xuất hiện ngơi nghỉ client side. Trong áp dụng này, tương ứng cùng với domain service TasksDomainService sinh hoạt VPS side, domain context sống client side là TasksDomainContext. Nó cung ứng kỹ năng gọi bất nhất quán và gửi các thay đổi bên trên entity (được thực hiện ngơi nghỉ client) cho hệ thống side. DomainContext thực sự là khối óc của WCF RIA Service ở phía client. Bất cứ đọng khi nào chúng ta thực thi tróc nã vấn để lấy những entity từ bỏ VPS thông qua domain context, nó những lưu giữ link cho các entity đó cùng cả hầu hết biến đổi trên các entity kia. Vì vậy, nếu khách hàng sửa đổi gần như đối tượng người tiêu dùng kia, nó biết gồm sự biến hóa với rất có thể gửi ngược trở lại hệ thống khi bạn đưa ra quyết định cập nhật hầu như chuyển đổi đó. Tôi vẫn nói nhiều hơn thế vào bài viết kế tiếp. Còn trong bài viết này, bọn họ triệu tập vào vấn đề lấy dữ liệu.

Thêm đoạn code sau vào hàm giải pháp xử lý sự kiện button searchButton

private void searchButton_Click(object sender, RoutedEventArgs e) DateTime lowerDateVal; DateTime upperDateVal; GetDates(out lowerDateVal, out upperDateVal); TasksDomainContext context = new TasksDomainContext(); taskDataGrid.ItemsSource = context.Tasks; EntityQuery query = context.GetTasksByStartDateQuery(lowerDateVal, upperDateVal); LoadOperation loadOp = context.Load(query);Đoạn code quan trọng đặc biệt sống đây là bốn mẫu cuối. Để Hotline cho hệ thống side, bạn cần một instance của domain context. Trong áp dụng thực tiễn, bạn phải duy trì domain name context lại bởi vì chính là khu vực lưu giữ các đổi khác trên đối tượng để update. Thông thường, các bạn sẽ knhì báo nó vào view mã sản phẩm hoặc phạm vi vận dụng. Tôi đang nói rõ rộng trong phần 4 của loạt bài xích này.

Domain context gồm property là một trong collection các entity được trả về bởi vì những thủ tục truy hỏi vấn sinh hoạt domain service. Trong ví dụ này, domain service chỉ kết xuất một collection các Task. Để ý rằng loại lệnh gán ItemsSource của DataGrid bởi context.Tasks trước lúc hotline ngẫu nhiên truy hỏi vấn làm sao. Vì khi bạn truy tìm vấn thông qua domain context, câu tầm nã vấn được Điện thoại tư vấn bất đồng nhất cùng đang thay thế sửa chữa văn bản của collection ngay khi nhận thấy tài liệu trả về trường đoản cú server. Collection này (context.Tasks) hiện thực eventINotifyCollectionChanged cùng vẫn raise event nhằm DataGrid trường đoản cú update lại Khi nhận ra event này.

Dòng lệnh tiếp đến mang một EntityQuery tự domain context với các tham mê số truyền vào tương ứng. Đó mới chỉ là thiết lập những gì bạn có nhu cầu triển khai, nó đang chưa thực sự điện thoại tư vấn đến hệ thống. Cuối thuộc, ta mang một LoadOperation từ tên miền context bằng phương pháp Call phương thức Load. Đây là lúc thực hiện lời Call mang lại VPS, nó đang điều khiển xe trên background thread cùng từ bỏ update Lúc nhận được tác dụng trả về từ server.

Xem thêm: Bình Trọc Là Ai - 'Điểm Danh' Giang Hồ Mạng

Đây tương tự như những gì xẩy ra với DomainDataSource được áp dụng vào XAML ở bài viết trước.

Cách 4: Thêm câu tầm nã vấn trả về một entity duy nhất

Để trả về một entity ráng vị một collection chúng ta chỉ việc quan niệm nó trên domain name service. Một cách thức truy vấn vấn tương ứng sẽ được chế tác vào tên miền context sau khi biên dịch.

public Task GetTask(int taskId) return this.ObjectContext.Tasks.FirstOrDefault(t => t.TaskId == taskId);

Quy ước khắc tên phương thức

Đây là 1 trong những Xu thế mới nổi trong cải cách và phát triển .NET – làm sút lượng cấu hình vào code phụ thuộc vào một trong những quy ước khắc tên. Có một trong những tiền tố WCF RIA Services phân biệt được với các cách làm update, thêm mới, xóa như UpdateTask, InsertTask, DeleteTask (với các tiền tố khác như Change, Modify, Add, Create, Remove).

Quý Khách cũng có thể cấu hình bằng cách sử dụng các attribute. ví dụ như cùng với các câu truy vấn vấn, bạn thực hiện attribute . Những cách thức tất cả hình trạng trả về là IQueryableIEnumerable hoặc một entity cũng được khẳng định rõ ràng là một trong phương thức truy vấn vấn. trong số những ưu thế của bài toán thực hiện atrribute là nó cung cấp thêm 1 vài đồ vật như con số bộ phận tối đa vào hiệu quả trả về.

quý khách có thể tham khảo thêm một số trong những quy ước đặt tên tại đây.

Tùy chỉnh Domain Service

quý khách hàng không muốn thực hiện Entity Framework? Một sàng lọc không giống là LINQ lớn SQL. Theo chủ ý cá thể, tôi ý kiến đề xuất chúng ta nên thực hiện Entity Framework nếu như bạn bước đầu một dự án bắt đầu. Nó thực sự có khả năng cùng dường như đã là cách thức truy nã xuất dữ liệu tự .NET xuất sắc được sử dụng lâu bền hơn. LINQ khổng lồ SQL cũng rất được cung ứng thông qua WCF RIA Services Toolkit nếu khách hàng thực thụ mong mỏi áp dụng nó.

Nhưng tương đối nhiều bạn sẽ sử dụng các chiến lược tróc nã xuất tài liệu không giống (vd: nHibernate, SubSonic…) và những mối cung cấp tài liệu không giống (vd: Oracle, MySQL…). Bạn hoàn toàn có thể dễ ợt thực hiện chúng cùng với WCF RIA Services miễn là bạn khái niệm những đối tượng dữ liệu bạn muốn truyền qua là các entity dễ dàng và đơn giản. Nó được Call là POCO (Plain Old CLR Objects) domain name services.

Để làm cho điều này, bạn chỉ việc thừa kế tên miền service của khách hàng trực tiếp trường đoản cú class DomainService, cố kỉnh do thừa kế từ LinqToEntitiesDomainService. Trong cửa sổ Add New Domain Service Class (Add > New Item > Domain Data Service) chỉ cần lựa chọn “empty domain name service class” trong Available DataContext/ObjectContext. Sau kia từ khái niệm những entity, trả về IEnumerable nếu các nguồn tài liệu bên dưới ko hỗ trợ IQueryable với làm cho bất kể điều gì bạn cần trong các cách làm bên trên mối cung cấp dữ liệu khớp ứng.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *