Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / LabASP2(1-8)СоловьёвЯрославцева.doc
Скачиваний:
47
Добавлен:
03.06.2014
Размер:
2.59 Mб
Скачать

Часть 2-6.Доступ к данным с использованием Microsoft ado.Net Microsoft Visual Studio 2010

Описание работы:

В этой лабораторной работе будет рассмотрено создание простой службы данных ADO.NET в веб-приложении ASP.NET и последующий доступ к ней из приложения Windows Forms.

Ход выполнения работы Упражнение 1. Создание службы

  1. Создадим проект “Веб-приложение ASP.NET”

  2. Добавим новый элемент “Модель EDM ADO.NET”

  3. Подключим базу данных Northwind

  4. Добавим новый элемент “Служба данных ADO.NET”

  5. В редакторе кода, первый комментарий TODO: заменим следующим:

public class NorthwindCustomers :

DataService<NORTHWINDModel.NORTHWINDEntities>

  1. Заменим комментарии в обработчике событий InitializeService следующим кодом:

config.SetEntitySetAccessRule("*", EntitySetRights.All);

Запустим и оценим результат. В окне увидим XML-представления данных таблицы

Упражнение 2. Создание клиентского приложения

Порядок выполнения работы:

  1. Добавим новый проект “Приложение Windows Forms” и назначим его автозагружаемым проектов

  2. Добавим ссылку на службу

  3. Включим привязку данных к службе (Customers)

  4. Перетащим узел Customers из окна Источники данных на форму

  5. Дважды щелкнем форму, чтобы открыть редактор кода, и введем следующий код

в обработчик событий Form1_Load:

ServiceReference1.NORTHIWNDEntities proxy = new

ServiceReference1.NORTHIWNDEntities(new

Uri("http://localhost:14735/NorthwindCustomers.svc"));

this.customersBindingSource.DataSource = proxy.Customers;

  1. Открываем NorthwindCustomers.svc в обозревателе и скопируем его URL-адрес, вставим его вместо того, который указан в предыдущем коде

Рис. 1

Упражнение 3 - Добавление возможностей фильтрации

  1. В обозревателе решений дважды щелкнитеForm1.vb илиForm1, чтобы отобразить конструктор Windows Forms.

  2. Перетащите элемент управления TextBox и элемент управления Button из панели элементов на форму.

  3. Дважды щелкните элемент управления Button и добавьте в обработчик событий Button1_Clickследующий код:

ServiceReference1.NORTHWINDEntities proxy = new

ServiceReference1.NORTHWINDEntities(new

Uri("http://localhost:14735/NorthwindCustomers.svc"));

string city = textBox1.Text;

if (city != "")

{

this.customersBindingSource.DataSource = from cin

proxy.Customers where c.City == city select c;

}

  1. В коде выше замените http://localhost:14735/NorthwindCustomers.svc URL-адресом из обработчика событийForm1_Load.

  2. Нажмите клавишу F5, чтобы запустить приложение.

  3. В текстовом поле введите “London” и нажмите кнопку. Будут отображены только клиенты из Лондона.

Листинг

Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace NorthwindClient

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

ServiceReference1.NORTHWNDEntities1 proxy = new

ServiceReference1.NORTHWNDEntities1(new Uri("http://localhost:56646/NorthwindCustomers.svc/"));

this.customersBindingSource.DataSource = proxy.Customers;

}

private void button1_Click(object sender, EventArgs e)

{

ServiceReference1.NORTHWNDEntities1 proxy = new ServiceReference1.NORTHWNDEntities1(new Uri("http://localhost:56646/NorthwindCustomers.svc/"));

string city = textBox1.Text;

if (city != "")

{

this.customersBindingSource.DataSource = from c in proxy.Customers

where c.City == city

select c;

} } }}

NorthwindCustomers

using System;

using System.Collections.Generic;

using System.Data.Services;

using System.Data.Services.Common;

using System.Linq;

using System.ServiceModel.Web;

using System.Web;

namespace NorthwindWeb

{

public class NorthwindCustomers : DataService <NorthwindWeb.NORTHWNDEntities1>

{

// This method is called only once to initialize service-wide policies.

public static void InitializeService(DataServiceConfiguration config)

{

// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.

// Examples:

config.SetEntitySetAccessRule("*", EntitySetRights.All);

// config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);

config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; }

}}

Результат работы программы:

Рис. 2