Проверка входных данных в Silverlight 4 для объекта EF - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть приложение Silverlight, которое загружает объекты из службы WCF через привязку данных.

Итак, у меня есть несколько представлений со многими текстовыми полями, содержимое текстовых полей которых привязано к свойствам сущности.

Я хочу использовать проверку Silverlight и не хочу использовать метод исключений (у меня есть несколько объектов с большим количеством свойств ... и я не хочу повторять это каждый раз, когда использую его в форме ...).

Так что я пытаюсь использовать способ IDataErrorInfo, но я не уверен, как мне это сделать.

Думаю, мне следует объявить модель на стороне клиента с эквивалентными классами для модели Service EF, но с реализацией IDataErrorInfo. Это решение означает дублирование кода модели и любой способ перевода из модели обслуживания в модель клиента.

Другим решением может быть изменение самой модели EF, но я не знаю, правильно ли это для MVVM (это действительно близко к представлению, не так ли).

Может быть, есть другое волшебное решение, которое я не знаю.

Есть предложения ??

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Рекомендуемый интерфейс на самом деле INotifyDataErrorInfo

Что дает вам немного больше контроля и поддерживает несколько ошибок. Также немного проще использовать в сценариях, когда вы хотите вручную контролировать, когда происходит проверка.

По сути, с помощью этого вы можете создать метод validate для ваших «клиентских» объектов, который просматривает их свойства, проверяет каждый из них и создает список ошибок. (HasErrors становится истинным, вы уведомляете ErrorsChanged, а затем код, который привязывается к вашему объекту, делает GetErrors.

Таким образом, вы можете создать механизм проверки и заставить каждый объект EF опрашивать вашу базу данных на предмет правил проверки.

Также есть это: http://msdn.microsoft.com/en-us/magazine/ee335695.aspx Если у вас есть возможность аннотировать свои EF-классы на стороне клиента, а не просто использовать сгенерированные, вы можете найти простое решение здесь.

1 голос
/ 14 апреля 2011

Я знаю, что это немного не по теме, так как вы используете WCF, но если вы используете службы RIA, то он генерирует объекты из вашего EF, и вы можете просто добавить к ним некоторые атрибуты в RIA (он поставляется скомментарии, указывающие, какие атрибуты использовать), и это очень и очень просто.

, но этот совет уместен, только если вы должны использовать RIA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...