Отображение данных в DataGrid при помощи LINQ и WCF в Silverlight - Linq to Sql

ОГЛАВЛЕНИЕ

Linq to Sql

LINQ является очень мощным дополнение к CSharp и скорее всего станет основной техникой возврата данных для Silverlight и других технологий .NET. Для изучения Linq я рекомендую вам изучить статью ScottGu's , а также существующие книги по данной тематике. В данной статье мы напишем простой запрос LINQ, который будет обработан мною за вас.

Добавление классов Linq

Для того чтобы начать, щелкните правой кнопкой мыши по серверному проекту, выберите пункт добавления нового элемента (Add->New Item), и затем выберите LinqToSql Classes. Обратите внимание на то, что пояснение под окошком гласит о том, что "классы LINQ to SQL преобразованы в реляционные объекты."

 

Рис. 3-3. Добавление шаблона LinqToSql

Когда откроется окно Object Relational Designer, откройте обозреватель сервера Server Explorer (View->Server Explorer) и перейдите к базе данных AdventureWorkLTs (установленной с SQL Server либо загруженной с Micrsoft.com).

 

Рис. 3-4. Переход к базе данных AdventureWorkLT

Установка AdventureWorksLT

Если AdventureWorksLT не отображается, то вам необходимо его установить. Вот как это можно сделать (хотя установка баз данных может быть проблематичной, данный подход сработает во многих случаях)

  1. Щелкните правой кнопкой мыши по Data Connections (Соединения) и выберите Add Connection (Добавить соединение).
  2. В диалоговом окне Data Source (Источник данных) выберите пункт Microsoft Sql Server и нажмите Continue (Далее)
  3. В диалоговом окне Add Connection (Добавить соединение) введите название вашего сервера - чаще всего это будет MachineName\SqlExpress
  4. Вам понадобится установить базу данных AdventureWorksLT, которую вы сможете загрузить с сайта Microsoft Codeplex (http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040) - Вам необходима база "SQL2008 AdventureWorks LT dB v2005 x.86.msi".
  5. Возвращаемся к диалоговому окну Add Connection (Добавить соединение), где вам понадобится найти и добавить только что установленную базу данных AdventureWorksLT (в случае, если у вас Vista, она чаще всего расположена в Program Files (x86)\Microsoft SQL Server.... как это показано на изображении )
  6. Нажмите на Test Connection (Тестировать соединение) для того, чтобы удостовериться в том, что было осуществлено соединение к базе данных Adventure Works; если все прошло успешно - нажмите OK, а если нет, то попробуйте еще раз, либо ищите корень проблемы в шагах установки.

 

Рис. 3-5. Осуществление соединения к базе данных Adventure Works

Для того, чтобы отобразились все таблицы, расширьте и перетащите таблицу Customer в рабочее пространство DataClasses1.dbml Designer.

Обратите внимание на то, что это может подразумевать правый щелчок по Data Connections и выбор Add Connection. В диалоговом окне Choose Data Source (Выбор источника данных) вам надо выбрать Microsoft Sql Server, а остальные опции оставьте так, как они есть. Затем нажмите на Continue. Это откроет диалоговое окно Add Connection, где вы введете название вашего сервера, на котором у вас загружена база данных AdventureworksLT (если вы не загружали базу данных, вы можете остановиться тут, загрузить файл из сайта Microsoft и загрузить его на ваш компьютер). Если вы загрузили ее на ваш компьютер, введите localhost и выберите Windows Authentication либо Sql Server Authentication (если вы не уверены - выберите первый вариант).

 

Рис. 3-6. Перенос таблицы в дизайнер (Designer)

После того как вы сделаете это ,вы можете увидеть предупреждение, подобное показанному на изображении 3-7 . Нажмите OK

 

Рис. 3-7. Предупреждение

Преобразование результирующего класса LINQ в сериализуемый класс

В то время как класс LINQ будет сгенерирован соответственно таблице Customer, по умолчанию данный класс не будет считаться сериализуемым, но для того, чтобы использовать его в веб-сервисе нам придется изменить это. Нажмите на область проектирования (Design Surface), чтобы вызвать свойства всего класса и измените режим Serilaization со значения None (Отсутствует) в Unidirectional (Безусловный)

 

Рис. 3-8. Преобразование результирующего класса LINQ в сериализуемый класс