Навігація

  • Домашняя
  • Продукты
  • Услуги
  • Регистрация
  • Новости
  • Статьи
  • Контакты

Логінування

Did you lose your password?

Останні новини

2010-05-06 23:30

«Яндекс» запустив новинну карту

«Яндекс» запустив новинну карту Новинна мапа представляє собою графічне відображення активності регіонів в інформаційній картині дня. Користувачі можуть переглядати новинну мапу Росі...

Подробнее...

2010-05-06 23:25

Інтернет: Google в Україні: порталів вистачає, потрібен сервісний бізнес.

В українському сегменті Інтернет уже зайняті ніші порталів і сайтів новин, гравців вистачає. Перспективніше сьогодні створювати сервісний бізнес, який

Подробнее...

Русский > Статьи > SilverLight,. Net Ria Services и связь many to many

SilverLight 4, .Net Ria Services и связь many to many

Начав работать с SilverLight 4 и. Net Ria Services, одной из первых проблем с которой я столкнулся это была проблема организации связи many to many.
На серверном уровне все было ОК. Генератор Entity Framework (EF) создал связь many to many, и отображал его в окне Model Browser без проблем. Но почему то на клиентскую сторону (SilverLight) данные не передавались. После поиска в google я наткнулся вот на такой вывод по поддержке связи many to many в .Net Ria Services: "RIA Services does not support the many to many relationship directly". Так как организовать связь many to many в. Net Ria Services? А все просто, нам необходимо заменить одину связь many to many двумя one to many связями. Давайте перйдем к конкретному примеру.
Для начала создайте базу данных с следующей структурой:

Как видно из рисунка между таблицами Roles и Users есть классическая many to many связь. Поле Note в таблице UsersRoles было добавлено для того чтобы генератор EF сгенерировал три класса: Users, Roles и UsersRles (обход проблемы many to many в .Net Ria Services) с связями one to many. Если забрать это поле то генератор EF создаст только два класса (Roles и Users) с связю many to many, что нам совсем не нужно (как я уже говорил выше. Net Ria Services не поддерживает напрямую связь many to many).

Далее создадим новый проект Silver Light Business Application (я назвал его NRSBusinesApp. В Solution Explorer в проекте NRSBusinesApp.Web кликаем правой кнопкой мыши по папке Models и из контекстного меню выбираем пункт "Add - > New Item ...". В окне что появилось, выберите Installed Templates - > Data - > ADO. NET Entity Data Model, переименуйте с Model1.edmx на ModelNRS.edmx и нажмите Add. В окне что появилось выберите "Generate from database" и нажмите "Next >, теперь перед вами должено появиться окно создания соеднение к вашей базы данных, если у вас еще нет созданного коннекта то создайте его как показано ниже на рисунке:
После создания соеднение, жмем "Next >", в результате у нас появится окно "Entity Data Model Wizard", в котором мы должны выбрать таблицы из которых будут созданы наши бизнес объекты, и нажать "Finish":

После всех этих манипуляций у вас должна быть приблизительно такая модель данных:


Далее Перестройте проект (Build - > Rebuild Solution)
Теперь нам нужно создать уровень доступа к нашей модели данных. Для этого в Solution Explorer в проекте NRSBusinesApp.Web кликаем правой кнопкой мыши по папке Services и из контекстного меню выбираем пункт "Add - > New Item ...". В окне что появилось, выберите Installed Templates - > Web-> Domain Service Class, переименуйте с DomainService1.cs на NRSDomainService.cs и нажмите Add. В окне Add New Domain Service Class отмечаем галочками записи в столбцах Entities и Enable Editing и нажмите OK, как показано на рисунке:


Мы только что создали уровень доступа к нашей модели данных. На рисунке ниже вы можете увидеть созданные генератором файлы:

Откройте файл NSRDomainService.metadata.cs. Найдите в нем класс "internal sealed class UsersMetadata" и над полем "UsersRoles" добавьте атрибут [Include]:

Аналогично сделайте в классе: "internal sealed class UsersRolesMetadata":


Откройте файл NSRDomainService.cs. Найдите в нем метод GetUsers () и измените его как показано ниже:

Перестройте проект. Теперь у вас все готово чтобы передать информацию о пользователях и их ролях на уровень SilverLight клиента.
Откройте Home.xaml в SilverLight проекте NRSBusinesApp (Views - > Home.xaml. Из окна Data Sources перетащите Users и Users Roles на страницу Home.xaml. Добавьте в базу данных несколько ролей пользователей и связей между ними. Запустите проект. У вас должно получиться нечто подобное:


Теперь нам нужно поработать над отражением ролей пользователя (чтобы отображались только роли выбранного пользователя. Для этого перейдем на Home.xaml, найдем объект usersDataGrid и добавим к нему обработчик событий "SelectionChanged. В обработчике событий добавьте следующий код:


В xmal коде измените userRolesDataGrid так как показано ниже:


Перекомпилюйте и запустите проект. У меня получился вот такой результат:


Автор: Виктор Миронович
Скачать пример к статье% sload
*
*
Что является суммой 7 и 7?*

Вернуться

Головна Продукти Послуги Підтримка Про нас

Copyright 2010 ProMicroTech. All Rights Reserved. Веб студія: створення сайту

замовити сайт