2009-05-04 4 views
6

Tôi có dịch vụ WCF có lớp [DataContract] được định nghĩa trong đó. Mỗi thuộc tính có thuộc tính [DataMember] và tôi đã thêm một vài thuộc tính Chú thích dữ liệu [Bắt buộc] và [StringLength] vào một vài thuộc tính.Chú thích dữ liệu về hợp đồng dịch vụ WCF

Sau đó tôi sử dụng dịch vụ này trong ứng dụng asp.net MVC làm tài liệu tham khảo dịch vụ. Khi tôi nhận được danh sách tất cả các thuộc tính sử dụng

var attr= from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>() 
         from attribute in prop.Attributes.OfType<ValidationAttribute>() 
         select attribute; 

Tôi thấy không có chú thích dữ liệu nào đi qua. Đây có phải là một hạn chế của WCF hay tôi đang làm một cái gì đó về cơ bản sai ở đây?

Trả lời

7

Các thuộc tính sẽ không được đăng theo tuần tự khi hợp đồng dữ liệu của bạn được gửi qua dây. Thuộc tính mới mà bạn đã tạo trong dữ liệu siêu dữ liệu có liên quan đến thuộc tính và do đó thuộc tính mà thuộc tính thuộc về. Đây không phải là dữ liệu và sẽ không có sẵn.

Tôi đoán rằng bạn đã thêm tài liệu tham khảo dịch vụ vào ứng dụng MVP asp.net của bạn, điều này sẽ trừ khi được chỉ định, tạo các lớp proxy mới đại diện cho hợp đồng dữ liệu của bạn.

Khi bạn thêm tham chiếu dịch vụ, nếu bạn nhấp vào nút nâng cao, hãy đảm bảo rằng 'Sử dụng các loại hiện có' được chọn. Điều này đảm bảo rằng dịch vụ của bạn sẽ sử dụng conract hiện có của bạn.

Đây có thể không phải là phương pháp hay nhất vì ứng dụng khách sẽ phải có kiến ​​thức về Loại bạn đang quay trở lại từ dịch vụ. Điều này có thể được okay nếu dịch vụ của bạn chỉ được sử dụng bởi chính mình, trong trường hợp đó bạn sẽ cần phải thêm một tài liệu tham khảo cho bạn hợp đồng trong ứng dụng asp.net MVC của bạn.

+0

Vì vậy, tôi có thể sao chép IDE các thuộc tính DataAnnotations cho lớp proxy người tiêu dùng? Nếu có, làm thế nào? Tôi không tìm thấy tùy chọn 'Sử dụng các loại hiện có' được đề cập trong bài đăng của bạn (tôi sử dụng VS10). – Shimmy

3

Nhóm OData đang làm việc trong một giải pháp để hiển thị siêu dữ liệu xác thực dưới dạng "từ vựng".

Thông tin khác: http://www.odata.org/blog/vocabularies

+0

Rất thú vị. Hy vọng rằng chúng ta có thể tiếp tục sử dụng các chú thích dữ liệu tiêu chuẩn (di động) và các thuộc tính hợp đồng dữ liệu và hệ thống ống nước sẽ được thực hiện cho chúng ta bởi khung công tác. Đã có quá nhiều thuộc tính cho cùng một loại khai báo đối tượng, ví dụ: serializer, serializer XML, hợp đồng dữ liệu, chú thích dữ liệu, khung thực thể ... !!! –