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
Nguồn
2011-01-10 23:48:35
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 .... –
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 –