К сожалению, DataSet не поддерживаются в Silverlight 2 (и afaik не поддерживаются в Silverlight 3).
Я собираюсь предположить, что у вашего текущего уровня данных есть методы, такие как GetTopCustomers, которые возвращают DataSets, затем клиентское приложение может изменить эти данные и повторно передать их в функцию уровня данных, например UpdateCustomers, которая принимает DataSet в качестве параметра, и затем отправляет изменения в базу данных. Если это так, я думаю, вам будет нелегко написать оболочку, потому что вы будете сами по себе для обеспечения ссылочной целостности и отслеживания изменений на стороне клиента. Это, конечно, возможно, но я думаю, что это будет больше боли, чем стоит. Поэтому создание imo-оболочки вокруг уровня данных будет эквивалентно изменению всей архитектуры уровня данных для возврата коллекций и т. Д.
Лучшим выбором для уровня данных является .NET RIA Services, который поставляется когда-то в период Silverlight 3. Это огромный скачок по сравнению с современной технологией ADO.NET Data Services, в которой добавлено отслеживание изменений и DataSet-подобный «контекст» для клиента. Это также позволяет напрямую обмениваться кодом между ASP.NET (или любой частью полной .NET Framework) и Silverlight, чтобы ваши бизнес-правила могли выполняться как на стороне клиента, так и на стороне сервера. Переписывание слоя данных может показаться не очень привлекательным, но я думаю, что это избавит вас от большой боли, и вы получите огромную отдачу, если выберете .NET RIA Services. Если этот выбор не подходит, другой вариант - использовать ADO.NET Data Services для доставки данных туда и обратно (в сочетании с оберткой для текущего уровня данных) или для создания собственных пользовательских служб WCF для обеспечения операций CRUD (снова с оберткой на текущем слое данных).
Удачи!