2009-05-04 25 views
6

Mam usługę WCF, która ma zdefiniowaną w niej klasę [DataContract]. Każda z właściwości ma atrybut [DataMember] i dodałem kilka atrybutów Adnotacji danych [Wymagane] i [StringLength] do kilku właściwości.Adnotacje danych na kontrakcie na usługi WCF

Następnie używam tej usługi w aplikacji asp.net MVC jako odwołanie do usługi. Gdy otrzymam listę wszystkich atrybutów z użyciem , widzę, że żadne z adnotacji danych nie zostały przesłane. Czy jest to ograniczenie WCF, czy też robię coś fundamentalnie nie tak?

Odpowiedz

7

Atrybuty nie zostaną przekształcone do postaci szeregowej, gdy umowa danych zostanie wysłana za pośrednictwem kabla. Nowy atrybut, który utworzyłeś w esencjonalnych metadanych, który jest powiązany z właściwością, a tym samym Typ, do którego należy właściwość. To nie są dane i nie będą dostępne.

Przypuszczam, że dodałeś odwołanie do usługi w aplikacji asp.net mvc, to, o ile nie zostanie określone, utworzą nowe klasy proxy, które reprezentują twoją umowę na dane.

Po dodaniu odwołania do usługi, po kliknięciu przycisku wyboru upewnij się, że zaznaczono opcję "Użyj istniejących typów". Zapewni to, że Twoja usługa będzie korzystać z istniejącej umowy.

To może nie być najlepsza praktyka, ponieważ aplikacja kliencka będzie musiała mieć wiedzę na temat typu, który powracasz z usługi. Może to być w porządku, jeśli twoja usługa jest używana tylko przez ciebie, w takim przypadku będziesz musiał dodać odniesienie do umowy w aplikacji asp.net mvc.

+0

Więc dolnej linii, czy jest jakiś sposób mogę sprawić, że IDE skopiować DataAnnotations atrybuty konsumentowi proxy klas ?? Jeśli tak, w jaki sposób? Nie znalazłem opcji "Użyj istniejących typów" wymienionej we wpisie (używam VS10). – Shimmy

3

Zespół OData pracuje nad rozwiązaniem, które ujawnia metadane walidacyjne jako "słownictwo".

Więcej informacji: http://www.odata.org/blog/vocabularies

+0

Bardzo interesujące. Mamy nadzieję, że nadal będziemy mogli używać standardowych (przenośnych) adnotacji danych i atrybutów kontraktów danych, a prace instalacyjne będą wykonywane przez nas w ramach. Istnieje już zbyt wiele atrybutów dla tego samego typu deklaracji jednostki, np. serializer, serializator XML, kontrakty danych, adnotacje danych, framework encji ... !!! –

Powiązane problemy