Tôi đã tạo một lược đồ như là một giao thức được thỏa thuận giữa công ty chúng tôi và một công ty bên ngoài. Bây giờ tôi đang tạo một dịch vụ web WCF C# để xử lý giao diện.xsd.exe - lược đồ đến lớp - để sử dụng với WCF
Tôi đã chạy tiện ích XSD và tạo một lớp C#. Lược đồ được xây dựng trong BizTalk và tham khảo các lược đồ khác, vì vậy tất cả trong tất cả đều có hơn 15 lớp được tạo ra.
Tôi đặt thuộc tính [DataContract} ở trước mỗi lớp. Tôi có phải đặt thuộc tính [DataMember] trên mỗi thuộc tính không?
Khi tôi tạo chương trình thử nghiệm của khách hàng, proxy không có bất kỳ mã nào cho bất kỳ lớp nào trong số 15 lớp này.
Chúng tôi đã sử dụng kỹ thuật này khi sử dụng dịch vụ .asmx, nhưng không chắc chắn liệu nó có hoạt động giống với WCF hay không. Nếu chúng ta thay đổi lược đồ, chúng ta sẽ muốn tạo lại lớp WCF, và sau đó chúng ta sẽ haev đến mỗi lần trang trí lại nó với tất cả các thuộc tính [DataMember]? Có một công cụ mới hơn tương tự như XSD.exe sẽ làm việc tốt hơn với WCF?
Cảm ơn,
Neal Walters
SOLUTION (chôn cất tại một trong Saunders câu trả lời/bình luận):
Thêm XmlSerializerFormat để định nghĩa giao diện:
[OperationContract]
[XmlSerializerFormat] // ADD THIS LINE
Transaction SubmitTransaction(Transaction transactionIn);
Hai ghi chú: 1) Sau khi tôi đã làm điều này, tôi thấy nhiều hơn nữa. xsds trong proxy của tôi (Se rvice Reference) kiểm tra chương trình client, nhưng tôi không thấy các lớp mới trong intelliSense của mình. 2) Vì lý do nào đó, cho đến khi tôi xây dựng dự án, tôi đã không nhận được tất cả các lớp trong phần intellisense (không chắc chắn lý do).
1) Khi tôi tạo ra một chương trình thử nghiệm của khách hàng, các proxy không có bất kỳ mã cho bất kỳ trong số này 15 lớp học. Sự hiểu biết của tôi là WCF yêu cầu [DataContract] và [DataMember] để hiển thị đúng cách. Tất cả các yếu tố đều tốt với tôi. 2) Tôi hoàn toàn đồng ý về việc không muốn thay đổi mã, đó là lý do tại sao tôi đăng câu hỏi. 3) Tôi nên tìm kiếm những gì để tìm hiểu thêm về XmlSerializer? Nó có tạo mã C# từ tệp .xsd không? Tôi có thể đã sử dụng nó ở khách hàng cuối cùng, nhưng cần phải truy cập vào gmail của tôi (bị chặn ở đây). – NealWalters
Sử dụng [XmlSerializerFormat] trên mỗi thao tác dịch vụ web yêu cầu XML serialization. Tiện ích XSD đã thực hiện tất cả công việc khác cho bạn. –
@Downvoter: lý do cho downvote? –