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

Hey there! Thanks for dropping by lltb3d.com! 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 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à đơn giản với thiết yếu sử dụng vào vận dụng thực tiễn. Đối với áp dụng thực tế, bạn phải biết cách làm cho vậy làm sao để thiết lập cấu hình services và thực hiện nó sinh sống client như thế nào. Trong nội dung bài viết này, tôi sẽ đi sâu hơn một chút vào quá trình truy hỏi vấn tài liệu từ client. Tôi cũng trở nên lướt qua về quy ước đánh tên cách thức được định nghĩa trong domain name service, cũng giống như bí quyết có tác dụng nỗ lực làm sao để gia công điều đó sử dụng attribute cụ vì chưng theo như đúng quy ước. Tôi cũng trở nên trả lời phương pháp cần sử dụng các truy vấn vấn trường đoản cú client. Cuối cùng, tôi vẫn nói về cách thực hiện dữ liệu trường đoản cú những nguồn tài liệu khác Entity Framework.quý khách vẫn xem: Wcf ria services part 2: tróc nã vấn dữ liệu

Để bắt đầu chúng ta nên sử dụng công dụng vẫn có tác dụng được tự phần trước. Quý Khách rất có thể download trên đây (khác).

Bạn đang xem: C# — dịch vụ wcf ria services part 2: truy vấn dữ liệu, c#

Download code hoàn hảo của nội dung bài viết này trên đây (khác).

Bước 1: Thêm tmê man số đến câu truy tìm vấn

Trong bài viết trước, sau thời điểm được chế tạo ra xong, vào tên miền service có một cách làm tróc nã vấn như thế này:

1: public IQueryable GetTasks() 2: 3: return this.ObjectContext.Tasks; 4: Câu tầm nã vấn này trả về tất cả các Task vào database dưới dạng một IQueryable. Nếu bạn muốn gồm các truy vấn vấn cụ thể hơn chứ đọng không hẳn trả về tất cả các chiếc, chúng ta cũng có thể thêm những cách làm tróc nã vấn rõ ràng vào tên miền service cùng nó sẽ tiến hành từ bỏ sinh ra làm việc client side. quý khách hàng cũng hoàn toàn có thể chọn kiểu trả về làIEnumerable, mà lại trường hợp các provider bên dưới (Entity Framework hoặc LINQ to SQL) trả vềIQueryable, các bạn cũng đề xuất trả về kiểu IQueryable rứa bởi gửi kiểu dáng.

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

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

Bước 2: Thêm đồ họa nhằm thực hiện các truy tìm vấn

Để hotline các tróc nã vấn kiếm tìm tìm cụ vị gọi GetTasks lúc Page_Load, bạn cần chỉnh sửa đồ họa một tí. Mở trang MainPage.xaml, giảm size của DataGrid nhằm chừa khu vực trống cung ứng hai TextBox với một Button nhỏng bên dưới đây


*

Đặt tên mang lại TextBox trước tiên là lowerDate, TextBox sản phẩm hai là upperDate cùng Button là searchButton. Nhấp lưu ban 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 trải qua DomainContext

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

Thêm đoạn code sau vào hàm 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 đặc biệt quan trọng làm việc đó là tứ cái cuối. Để Call đế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 phải duy trì tên miền context lại vày sẽ là địa điểm lưu giữ các biến hóa bên trên đối tượng người dùng nhằm update. Thông thường, bạn sẽ knhị báo nó trong view mã sản phẩm hoặc phạm vi áp dụng. Tôi vẫn nói rõ rộng trong phần 4 của loạt bài này.

Domain context bao gồm property là 1 collection các entity được trả về vị các cách thức tróc nã vấn làm việc tên miền service. Trong ví dụ này, domain service chỉ kết xuất một collection các Task. Để ý rằng mẫu 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 như thế nào. Vì khi bạn tầm nã vấn trải qua domain name context, câu truy nã vấn được call bất đồng hóa cùng đã sửa chữa nội dung của collection ngay trong khi nhận được dữ liệu trả về tự server. Collection này (context.Tasks) hiện thực eventINotifyCollectionChanged cùng vẫn raise sự kiện để DataGrid từ cập nhật lại khi nhận thấy sự kiện này.

Dòng lệnh sau đó lấy một EntityQuery trường đoản cú tên miền context với những tham số truyền vào khớp ứng. Đó chỉ mới là tùy chỉnh thiết lập mọi gì bạn muốn thực hiện, nó đang chưa thực thụ Điện thoại tư vấn cho server. Cuối cùng, ta rước một LoadOperation tự domain context bằng cách hotline phương thơm thức Load. Đây là thời gian tiến hành lời Hotline đến server, nó đã chạy xe trên background thread cùng tự cập nhật Lúc nhận thấy công dụng trả về tự hệ thống.

Xem thêm: Lau Mắt Đi Em Lệ Rơi Ướt Vai Rồi, Lời Bài Hát Anh Không Níu Kéo

Đây tương tự đều gì xảy ra với DomainDataSource được sử dụng vào XAML ở nội dung bài viết trước.

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

Để trả về một entity cố kỉnh vì chưng một collection bạn chỉ việc có mang nó trên domain name service. Một thủ tục tầm nã vấn khớp ứng sẽ tiến hành chế tạo ra trong domain 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 đặt tên pmùi hương thức

Đây là 1 xu hướng new nổi trong trở nên tân tiến .NET – làm sút lượng cấu hình vào code nhờ vào một số quy ước đánh tên. Có một số chi phí tố WCF RIA Services phân biệt được cùng với các cách thức update, thêm bắt đầu, xóa như UpdateTask, InsertTask, DeleteTask (cùng các chi phí tố khác ví như Change, Modify, Add, Create, Remove).

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

quý khách rất có thể xem thêm một số trong những quy ước đặt tên trên đây.

Tùy chỉnh Domain Service

Quý khách hàng không muốn áp dụng Entity Framework? Một sàng lọc không giống là LINQ khổng lồ Squốc lộ. Theo chủ kiến cá thể, tôi kiến nghị bạn nên áp dụng Entity Framework nếu bạn bắt đầu một dự án công trình new. Nó đích thực có tác dụng cùng có vẻ như đang là phương pháp truy xuất tài liệu từ bỏ .NET xuất sắc được sử dụng lâu dài. LINQ to Squốc lộ cũng khá được cung ứng thông qua WCF RIA Services Toolkit nếu như bạn thực sự ý muốn áp dụng nó.

Nhưng không hề ít tín đồ đã sử dụng các kế hoạch truy tìm xuất tài liệu không giống (vd: nHibernate, SubSonic…) và những nguồn dữ liệu khác (vd: Oracle, MySQL…). Quý Khách rất có thể thuận lợi thực hiện bọn chúng với WCF RIA Services miễn là bạn có mang những đối tượng người sử dụng tài liệu bạn có nhu cầu truyền qua là những entity đơn giản dễ dàng. Nó được call là POCO (Plain Old CLR Objects) domain services.

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

Leave a Reply

Your email address will not be published. Required fields are marked *