Есть ли лучшая альтернатива Dataset в WPF и Silverlight? - PullRequest
3 голосов
/ 12 августа 2010

Я разработал приложения WPF / XAML, которые вызывают объекты (функции или веб-службы), которые извлекают данные из различных источников (БД SQL Server, Active Directory, БД Oracle, SAP RFC, файлы XML, плоские файлы и т. Д.).

Эти объекты всегда возвращают наборы данных, которые затем связываются с сетями данных для отображения информации пользователю, кроме того, я делаю интересные вещи с наборами данных (объединяю таблицы, извлекаю метаданные / структуру, создаю новые столбцы и т. Д.).

Поскольку WPF предназначен для настольных компьютеров, развертывание приложения на каждом компьютере становится утомительным и дорогостоящим, поэтому мне настоятельно рекомендуется использовать «Silverlight Business Application» для доступа к приложениям через Интернет и в ближайшем будущем легкоадаптироваться к Windows Phone 7.

Казалось, что было легко перейти с WPF на Silverlight, но я столкнулся с некоторыми проблемами, и главное было на уровне управления данными: Silverlight не поддерживает наборы данных.

Я чувствовал себя немного разочарованным, потому что я чувствую себя вынужденнымсделайте копию всех моих функций / веб-сервисов и измените их так, чтобы они возвращали объекты, отличные от наборов данных.

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

Кто-нибудь нашел мощное и удобное решение, превосходящее набор данных?Если да, пожалуйста, дайте мне знать с примерами или ссылками, чтобы узнать.

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Если все ваши конечные пользователи используют Windows и находятся в одной сети, вам будет гораздо лучше придерживаться WPF и использовать ClickOnce . Мне нравятся как WPF, так и Silverlight, но Silverlight очень интересен, когда речь заходит о вещах, которые люди считают само собой разумеющимися, таких как ассоциации файлов, множественные окна, интеграция с другими приложениями и т. Д.

Но чтобы ответить на ваш вопрос, вам, вероятно, потребуется изменить архитектуру вашей стратегии доступа к данным и использовать что-то вроде LINQ и WCF Data Services. Поддержка инструментов в Visual Studio позволит вам создавать классы, которые моделируются по схеме вашей базы данных, и ваш интерфейс Silverlight / WPF может напрямую связываться с этими классами.

Существует этот проект на CodePlex , который, кажется, имеет минимальную реализацию DataSet / DataTable, но, честно говоря, я бы не советовал придерживаться DataSet. Причина, по которой Silverlight не поддерживает DataSet, заключается в том, что люди говорили, и разработчики отказались от модели DataSet, управляемой мастерами, в пользу более чистой и более гибкой технологии ORM (Object-Relational Mapping), такой как nHibernate или LINQ.

0 голосов
/ 12 августа 2010

У меня не было большого опыта работы с Silverlight, но для WPF я очень успешно использовал Entity Framework (версия 4, EF, поставляемый с .NET 3.5 вроде бы так себе).

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

Например: проверка данных. В Entity Framework классы сущностей являются частичными классами, и, таким образом, вы можете настроить их в значительной степени. Я поместил туда свой проверочный код, используя несколько словарей, которые отслеживают недопустимые значения свойств. Немного iDataErrorInfo тут и там, и вуаля, у меня есть легко привязываемая проверка данных, которая может инициировать изменения стиля в пользовательском интерфейсе.

Я еще не пробовал NHibernate или любые другие инструменты ORM. Однажды я это сделаю, но пока я нашел, что EF достаточно для моих целей. Легко понять, легко внедрить, много настроек, можно использовать с LINQ (LINQ to Entities), и он работает чертовски хорошо с WPF.

Cory

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