2010-01-28 1 views
5

У меня есть WPF приложение, которое использует LINQ к SQL на локальном .MDF файл. Это решение простой, легкий и эффективный, то есть настроить мою модель один раз, а затем чтения/записи данных в любом месте с помощью LINQ:Что такое эквивалент LINQ-to-SQL для Silverlight?

 using (var db = Datasource.GetContext()) 
     { 
      oldItem = (from i in db.Infos 
         where i.Id == TheId 
         select i).SingleOrDefault(); 
      CreateForm(db, FormBase, oldItem, Button_Save); 
     } 

Что является мертвой простой эквивалент этого для Silverlight приложений?

Поиск Я считаю, взрыв терминов:

  • WCF RIA Services, WCF Data Services (ADO.NET Data Services, Астория), Data Services Toolkit
  • .NET RIA Services
  • OData (Даллас)
  • GData
  • отдых, отдых на основе REST-как, REST-вдохновил
  • XML, JSON, XML RDF +
  • веб-сервисы, SOA
  • облачных услуг, Azure, SQL Azure, Azure Services Platform

Все, что я хочу сделать это:

  • создать файлы MDF file
  • использовать некоторый инструмент, похожий на LINQ-to-SQL, в создать слой данных с поддержкой Интернета (REST?) и т. д.
  • FTP файл .mdf и классы до моего ASP.NET веб-хостинга
  • записи SilverLight клиентов, что чтение и запись к этому источнику данных с LINQ
+0

+1 для служб RIA –

+0

+1 хороший вопрос –

ответ

4

Concentrate по обучению службам данных RIA или службам данных WCF. Он преобразует ваши запросы LINQ в Silverlight для запросов REST и избавляет вас от написания кода инфраструктуры. Вся идея заключается в том, что ваше приложение SL общается только с веб-службами, у вас нет доступа к физической БД, например, когда вы используете какой-либо ORM (L2S). В SL вы находитесь в песочнице браузера, что предотвращает доступ к файловой системе, включая файлы db.
Другой подход заключается в том, чтобы написать веб-сервис и предоставить данные через него (GetArticleByID), а затем использовать эти службы из Silverlight. Затем вы используете LINQ для повторения загруженных данных.

+1

+1 «Услуги передачи данных RIA и WCF», однако запрос не обязательно REST, но это не то, о чем разработчику нужно слишком беспокоиться. – AnthonyWJones

+0

Термин, который вызывает наиболее важные хиты, - это «Услуги WCF RIA», например. http://silverlight.net/getstarted/riaservices/ –

+0

Трудно идти в ногу с постоянным переименованием этой структуры. Долгое время была Astoria, которая представляет собой интерфейс REST-стиля для данных IQueryable через веб-службы WCF. Кроме того, они недавно создали службы WCF RIA для Silverlight, чтобы обеспечить быстрое и простое использование Astoria с запросами LINQ (службы данных WCF). Но в RIA Services есть некоторые понятия, которые мне действительно не нравятся, и помнит меня в ASP.NET SqlDataSource внутри ASPX-файла и SQL-запрос в нем! Держите логику доступа к данным в отдельном слабо связанном слое, а не в файле декларации UI! –

1

Невозможно. Silverlight не может напрямую обращаться к базам данных. Между тем требуется некоторый слой веб-сервиса. Я думаю, что WCF и RIA Services являются наиболее широко используемыми.

+0

правильно, я ищу что-то, что сгенерирует этот уровень веб-сервисов для меня, как LINQ-to-SQL генерирует класс модели данных для меня, поэтому мне не нужно об этом думать, просто «используйте его через linq», –

+0

+1, указав, что я хочу сгенерировать уровень веб-сервиса, а не классы модели данных, изменил это. –

3

Вот что делать -

  1. Создание Silverlight приложения с помощью Visual Studio.Вы получите два проекта: один с Silverlight XAML, а другой - веб-приложение для его размещения.

  2. В веб-приложении добавьте файл DBML (Linq-2-SQL). Настройка как обычный

  3. В веб-приложения, добавьте включен службу WCF

  4. Silverlight В службе WCF, определить некоторые методы, которые имеют доступ контекста данных L2S

  5. В Silverlight проекте, перейдите добавить ссылки на службе, нажмите кнопку «открыть» и добавить службу WCF в

  6. Инстанцировать службу, и получить доступ к вашей методе

Звучит немного сложно, но довольно прямолинейно на практике.

+1

+1 это тот путь, который я пробовал, попробую –

+0

Дайте мне знать, как это происходит - с удовольствием даем дальнейшие советы.Я сделал этот вид Silverlight-to-linq несколько раз сейчас ... –

+0

на шаге 3, когда я добавляю wcf-службу с поддержкой Silverlight в веб-приложение, я получаю «Ссылка на объект не установлена ​​в экземпляр объект ", хотя, похоже, создается сервис, какой-либо совет? –

1

Я настоятельно рекомендую вам ясно час в своем графике и просто смотреть это видео: -
net-ria-services-intro

На самом деле ясно 2 часа и работать вместе бок видео создать свой собственный экземпляр приложения строится ,

1

Если вы хотите разработать приложение LOB (Line Of Business), то вам следует следовать подходу, используя интерфейс веб-службы в вашей базе данных. Служба RIA или служба данных WCF - это настоящая технология RAD (Rapid Application Development), разработанная Microsoft для упрощения этой задачи.

Если вы говорите о специальном сценарии, который вам нужен: Silverlight 4 при запуске браузера теперь может разговаривать с серверами COM на окнах. Разговор с базами данных описан в этом обширном сообщении в блоге: Cutting Edge Silverlight 4 Com Features.

Если вы ищете способ манипулирования файлами, подобными базе данных, вы можете взглянуть на проект csharp-sqlite. Я думаю, что он компилируется для Silverlight без особого ado (быстрое и грязное доказательство концепции здесь: Proof of Concept csharp-sqlite in Silverlight). С его помощью вы можете создавать и манипулировать файлом базы данных в изолированном хранилище файлов пользователя в обычном приложении Silverlight, а затем загружать его туда, где хотите.

+0

+1 за идею запуска базы данных sqlite в изолированном хранилище пользователей, умный –

+0

вот статья, описывающая sqlite в silverlight: http://www.itwriting.com/blog/1695-proof-of-concept-c-sqlite -running-в-silverlight.html –