2010-01-28 14 views
5

Mam WPF aplikacji używającej LINQ-SQL na lokalnym MDF pliku. To rozwiązanie jest proste, łatwe i skuteczne, to skonfigurować mój model raz, następnie odczytu/zapisu danych w dowolnym miejscu za pomocą LINQ:Co to jest odpowiednik LINQ-SQL dla 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); 
     } 

Jaki jest martwy prosty odpowiednik to dla Silverlight apps?

wyszukiwania znajdę eksplozję kategoriach:

  • WCF RIA Services, WCF Data Services (ADO.NET Data Services, Astoria) Data Services Toolkit
  • .NET RIA Services
  • OData (Dallas)
  • GData
  • REST REST oparte REST-like, REST inspirowane
  • XML, JSON, XML RDF +
  • usług internetowych, SOA
  • usługi oparte na chmurze, Azure, SQL Azure, Azure Services Platform

Wszystko co chcę zrobić to w ten sposób:

  • utworzyć .mdf plik
  • użyć jakiegoś narzędzia podobnego do LINQ-SQL do wygenerować warstwę danych z obsługą sieci (REST?) itp.
  • ftp plik .mdf i klas do mojego ASP.NET hosting
  • zapisu silverlight klientów że odczytu i zapisu do tego źródła danych z LINQ
+0

+1 za usługi RIA –

+0

+1 dobre pytanie –

Odpowiedz

4

Concentrate na temat nauki usług RIA Data Services lub usług danych WCF. Konwertuje zapytania LINQ wewnątrz Silverlight na żądania REST i oszczędza ci pisania kodu infrastruktury. Cała idea polega na tym, że Twoja aplikacja SL komunikuje się tylko z usługami sieciowymi, nie masz dostępu do fizycznej bazy danych, np. Gdy używasz ORM (L2S). W SL jesteś wewnątrz sandbox przeglądarki, co uniemożliwia dostęp do systemu plików, w tym plików db.
Innym podejściem jest napisanie usługi internetowej i udostępnienie danych za jej pośrednictwem (GetArticleByID), a następnie korzystanie z usług Silverlight. Następnie używasz LINQ do iterowania na pobranych, wczytanych danych.

+1

+1 "Usługi danych RIA i WCF", jednak prośba nie musi być REST, ale nie jest to coś, o czym deweloper powinien się martwić. – AnthonyWJones

+0

terminem, który wywołuje najbardziej trafne trafienia, jest "Usługi WCF RIA", np. http://silverlight.net/getstarted/riaservices/ –

+0

Trudno nadążyć z ciągłą zmianą nazwy tego frameworka. Dawno temu istniała Astoria, która jest interfejsem w stylu REST do danych IQueryable za pośrednictwem usług internetowych WCF. Ponadto niedawno zbudowali usługi RIA WCF dla Silverlight, aby umożliwić szybkie i łatwe korzystanie z Astorii przy pomocy zapytań LINQ (WCF Data Services). Ale są pewne koncepcje wewnątrz usług RIA, które naprawdę nie lubię i zapamiętuje mnie do kontrolowania ASP.NET SqlDataSource w pliku ASPX i zapytania SQL w nim! Zachowaj logikę dostępu do danych w oddzielnej luźno powiązanej warstwie, a nie w pliku deklaracji UI! –

1

Niemożliwe. Silverlight nie może uzyskać bezpośredniego dostępu do baz danych. W międzyczasie wymagana jest pewna warstwa usługi sieci Web. Myślę, że usługi WCF i RIA są najczęściej używane.

+0

racja, szukam czegoś, co wygeneruje tę warstwę usługi sieciowej dla mnie, tak jak LINQ-SQL generuje dla mnie klasę modelu danych, więc nie muszę o tym myśleć, po prostu "użyj go przez linq" –

+0

+1 za wskazanie, że chcę wygenerować warstwę usługi internetowej, a nie klasy modelu danych, to zmieniłem. –

3

Oto, co robić -

  1. Tworzenie aplikacji Silverlight przy użyciu programu Visual Studio.Otrzymasz dwa projekty, jeden z Silverlight XAML, a drugi to aplikacja internetowa do hostowania go.

  2. W aplikacji internetowej dodaj plik DBML (Linq-2-SQL). Skonfigurować jako normalny

  3. W aplikacji internetowej, dodać Silverlight włączona usługę WCF

  4. W usług WCF, definiować pewne metody, które uzyskują dostęp kontekstu danych L2S

  5. W projekcie Silverlight, przejdź do dodawanie usługi Reference, hit „odkryć” i dodać usługę WCF w

  6. instancję usługi i dostęp do zapisanych metody

Brzmi trochę skomplikowanie, ale całkiem proste w praktyce.

+1

+1 Jest to rodzaj porady, którą mam zamiar przejść przez dżunglę, spróbuję. –

+0

Daj mi znać, jak to pójdzie - chętnie udzielimy dalszej porady.Zrobiłem tego typu rzeczy Silverlight-to-linq już kilka razy ... –

+0

w kroku 3, kiedy dodam usługę wcf obsługującą silverlight do aplikacji internetowej, otrzymuję "Odwołanie do obiektu nie jest ustawione na instancję obiekt ", chociaż wydaje się, że tworzy usługę, wszelkie porady tam? –

1

bym zalecamy jasne godzinę w harmonogramie i po prostu obejrzeć ten film: -
net-ria-services-intro

W rzeczywistości jasne 2 godziny, a prace wzdłuż boku wideo budować własną kopię aplikacji powstaje .

1

Jeśli chcesz utworzyć zwykłą aplikację LOB (Line of Business), powinieneś postępować zgodnie z podejściem wykorzystującym interfejs usługi WWW do swojej bazy danych. Usługi danych RIA lub usługa danych WCF jest obecną technologią RAD (Rapid Application Development) opracowaną przez firmę Microsoft w celu ułatwienia tego zadania.

Jeśli mówisz o specjalnym scenariuszu, potrzebujesz: Silverlight 4, gdy skończy się przeglądarka, może teraz rozmawiać z serwerami COM w systemie Windows. Rozmowa z bazami danych została opisana w tym obszernym blogu: Cutting Edge Silverlight 4 Com Features.

Jeśli szukasz sposobu na manipulowanie plikami bazodanowymi, możesz rzucić okiem na projekt csharp-sqlite. Myślę, że kompiluje on dla Silverlight bez zbytniej ado (szybki i brudny dowód koncepcji tutaj: Proof of Concept csharp-sqlite in Silverlight). Dzięki niemu można tworzyć i modyfikować plik bazy danych w odizolowanym pliku użytkownika w zwykłej aplikacji Silverlight, a następnie przesłać go do dowolnego miejsca.

+0

+1 za pomysł uruchomienia bazy danych sqlite w odizolowanym magazynie użytkowników, sprytny –

+0

tutaj jest artykuł opisujący sqlite w silverlight: http://www.itwriting.com/blog/1695-proof-ofconcept-c-sqlite -running-in-silverlight.html –

Powiązane problemy