2011-01-07 25 views
7

Tôi sử dụng WCF DataService và muốn sử dụng POCO. Tôi phải chỉ định một DataServiceKey để nó hoạt động (rõ ràng). Khi tôi làm điều đó tôi phải tham khảo System.Data.Services.Client (cho System.Data.Services.Common) - mà không cảm thấy rất POCO.WCF DataService, làm cách nào để tránh [DataServiceKey] trong POCOs

Có cách nào để giữ cho đồ vật của tôi sạch sẽ và chỉ định Khóa ở đâu đó khác không?

+0

Không, tôi không biết cách nào khác. Vì vậy, hoặc là bạn sẽ cần phải chấp nhận rằng thuộc tính duy nhất trên lớp POCO của bạn để sử dụng những tính năng tuyệt vời - hoặc sau đó chỉ cần không sử dụng WCF Data Services .... –

+0

Tôi không phải là một người thuần túy, vì vậy nếu có không có cách nào khác, tôi sẽ sử dụng nó, chỉ muốn chắc chắn rằng –

Trả lời

10

Nếu bạn đang sử dụng nhà cung cấp phản ánh và các lớp của bạn không tuân theo quy ước cho thuộc tính khóa, thì bạn phải sử dụng thuộc tính DataServiceKey. Nhà cung cấp phản ánh là nhà cung cấp mà bạn nhận được nếu bạn chỉ cung cấp các định nghĩa lớp và lớp ngữ cảnh cho DataService. Vì vậy, nếu bạn không triển khai IDataServiceMetadataProvider, bạn rất có thể đang sử dụng một nhà cung cấp phản chiếu. Có thể sử dụng nhà cung cấp phản ánh mà không có các thuộc tính trên lớp học của bạn, nhưng sau đó các dịch vụ dữ liệu WCF áp dụng một heuristics để tìm ra các thuộc tính quan trọng. Nó đi như thế này:

  • nếu lớp trong câu hỏi có tài sản được gọi ID, nó là một thực thể với ID là tài sản quan trọng mà thôi.
  • nếu lớp được gọi là ví dụ khách hàng và nó có một tính chất gọi là CustomerID, nó là một thực thể với tài sản CustomerID như chỉ là tài sản chính (tên của lớp là rõ ràng giống như mẫu).

Không có thuộc tính nào khác được công nhận là thuộc tính chính không có thuộc tính DataServiceKey. Điều này cũng được mô tả ví dụ trong blog này: http://blogs.msdn.com/b/alexj/archive/2010/06/11/tip-56-writing-an-odata-service-using-the-reflection-provider.aspx

Có thể sử dụng 100% lớp POCO với các thuộc tính tùy ý, nhưng sau đó bạn sẽ phải triển khai nhà cung cấp tùy chỉnh. Điều này là đáng kể hơn làm việc kể từ khi bạn phải xác định hình dạng của các lớp học của bạn programatically. Có thể tìm thấy hướng dẫn cung cấp tùy chỉnh mẫu tại đây: http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

+0

xuất sắc, đó là những gì tôi đang tìm kiếm. Cảm ơn bạn! –