C# — dịch vụ wcf ria services part 2: truy vấn dữ liệu, c#, compatibility when you use ria v1

Hey there! Thanks for dropping by trungbq! Take a look around & grab the RSS feed khổng lồ stay updated. See you around!

Tổng quan

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

Để ban đầu chúng ta nên thực hiện kết quả sẽ có tác dụng được từ phần trước. quý khách rất có thể download tại đây (khác).Quý khách hàng sẽ xem: Dịch vụ wcf ria là gì?

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

You watching: C# — dịch vụ wcf ria services part 2: truy vấn dữ liệu, c#, compatibility when you use ria v1

Bước 1: Thêm tsi mê số mang lại câu tầm nã vấn

Trong bài viết trước, sau khi được chế tác hoàn thành, trong domain service có một cách tiến hành tầm nã vấn như thế này:

1: public IQueryable GetTasks() 2: 3: return this.ObjectContext.Tasks; 4: Câu truy vấn vấn này trả về tất cả các Task vào database bên dưới dạng một IQueryable. Nếu bạn muốn có những truy nã vấn rõ ràng rộng chứ không phải trả về toàn bộ các dòng, chúng ta cũng có thể thêm các cách thức tầm nã vấn ví dụ vào domain service với nó sẽ được trường đoản cú hiện ra làm việc client side. Quý khách hàng cũng hoàn toàn có thể lựa chọn hình dáng trả về làIEnumerable, tuy vậy nếu những provider bên dưới (Entity Framework hoặc LINQ khổng lồ SQL) trả vềIQueryable, chúng ta cũng buộc phải trả về kiểu IQueryable cố gắng vày chuyển giao diện.

Một trường hòa hợp hay gặp là ứng dụng của khách hàng chất nhận được người dùng đem các Task vào một khoảng tầm thời hạn. Để cung ứng điều ấy, bạn thêm thủ tục sau vào domain service

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

Cách 2: Thêm bối cảnh nhằm thực hiện những truy vấn

Để điện thoại tư vấn những truy vấn kiếm tìm tìm cụ do gọi GetTasks lúc Page_Load, bạn phải sửa đổi bối cảnh một tí. Mngơi nghỉ trang MainPage.xaml, giảm kích thước của DataGrid để chừa vị trí trống cung ứng hai TextBox cùng một Button nhỏng dưới đây


*

Đặt thương hiệu đến TextBox trước tiên là lowerDate, TextBox máy hai là upperDate với Button là searchButton. Nhấp đúp vào button để thêm hàm giải pháp xử lý sự kiện.

Cách 3: Thực thi câu tầm nã vấn tự client trải qua DomainContext

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

Thêm đoạn code sau vào hàm xử lý sự khiếu nại 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 đặc trưng nghỉ ngơi đó là tư chiếc cuối. Để điện thoại tư vấn đến hệ thống side, bạn cần một instance của tên miền context. Trong vận dụng thực tiễn, bạn cần giữ lại domain name context lại bởi vì sẽ là địa điểm giữ những thay đổi trên đối tượng người sử dụng để update. Đôi khi, các bạn sẽ knhì báo nó vào view mã sản phẩm hoặc phạm vi áp dụng. Tôi đang phân tích rộng vào phần 4 của loạt bài bác này.

Domain context bao gồm property là 1 collection những entity được trả về bởi vì những phương thức truy vấn sống tên miền service. Trong ví dụ này, domain name 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ằng context.Tasks trước khi Call ngẫu nhiên truy tìm vấn nào. Vì khi chúng ta truy nã vấn trải qua tên miền context, câu truy nã vấn được điện thoại tư vấn bất đồng nhất cùng sẽ thay thế nội dung của collection ngay trong khi nhận được tài liệu trả về tự hệ thống. Collection này (context.Tasks) thực tại eventINotifyCollectionChanged với đang raise event để DataGrid từ bỏ update lại khi nhận thấy sự kiện này.

Đây tựa như hầu hết gì xẩy ra với DomainDataSource được thực hiện vào XAML ở nội dung bài viết trước.

See more: Alkaline Phosphatase Là Gì, Ý Nghĩa Của Xét Nghiệm Đo Hoạt Độ Alp Trong Máu

Bước 4: Thêm câu tầm nã vấn trả về một entity duy nhất

Để trả về một entity chũm bởi vì một collection các bạn chỉ việc có mang nó bên trên tên miền service. Một phương thức truy vấn khớp ứng sẽ được chế tạo ra trong domain name context sau thời điểm biên dịch.

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

Quy ước đánh tên pmùi hương thức

Đây là 1 trong xu hướng bắt đầu nổi vào trở nên tân tiến .NET – làm giảm lượng cấu hình trong code dựa vào một vài quy ước đánh tên. Có một số trong những tiền tố WCF RIA Services phân biệt được với các phương thức cập nhật, thêm new, xóa như UpdateTask, InsertTask, DeleteTask (cùng 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 thực hiện các attribute. Ví dụ với những câu tầm nã vấn, chúng ta áp dụng attribute . Những phương thức gồm giao diện trả về là IQueryableIEnumerable hoặc một entity cũng được xác định cụ thể là một trong những cách làm truy vấn vấn. Một trong những điểm mạnh của vấn đề thực hiện atrribute là nó cung ứng thêm một vài ba vật dụng nhỏng con số thành phần về tối nhiều trong tác dụng trả về.

Bạn có thể xem thêm một số trong những quy ước đặt tên tại trên đây.

Tùy chỉnh Domain Service

Bạn không thích thực hiện Entity Framework? Một chọn lựa khác là LINQ khổng lồ Squốc lộ. Theo ý kiến cá thể, tôi kiến nghị bạn nên thực hiện Entity Framework nếu khách hàng bước đầu một dự án bắt đầu. Nó đích thực có công dụng và dường như sẽ là phương pháp truy vấn xuất tài liệu tự .NET xuất sắc được sử dụng dài lâu. LINQ khổng lồ Squốc lộ cũng được hỗ trợ trải qua WCF RIA Services Toolkit nếu bạn thực sự mong sử dụng nó.

See more: Chill Out Là Gì ? Chill Out, Chill Phết Nghĩa Là Gì? Chill Out, Chill Phết Nghĩa Là Gì

Để có tác dụng điều đó, bạn chỉ cần thừa kế tên miền service của bạn trực tiếp từ class DomainService, vắt vị thừa kế từ LinqToEntitiesDomainService. Trong cửa ngõ sổ Add New Domain Service Class (Add > New Item > Domain Data Service) chỉ cần chọn “empty domain service class” trong Available DataContext/ObjectContext. Sau kia tự định nghĩa những entity, trả về IEnumerable giả dụ các mối cung cấp dữ liệu bên dưới không cung ứng IQueryable và làm bất kể điều gì bạn cần trong số cách làm bên trên mối cung cấp tài liệu khớp ứng.


Chuyên mục: Giải Đáp