Пошаговое руководство. Применение только хранимых процедур (C#) (LINQ to SQL)

Обновлен: November 2007

В данном пошаговом руководстве представлен основной полный сценарий LINQ to SQL для получения доступа к данным, выполняя только хранимые процедуры. Этот метод часто используется администраторами баз данных для ограничения способов получения доступа к хранилищам данных.

Bb399407.alert_note(ru-ru,VS.90).gifПримечание.

Хранимые процедуры можно также использовать в приложениях LINQ to SQL для переопределения поведения по умолчанию, особенно для процессов Create, Update и Delete. Дополнительные сведения см. в разделе Настройка операций вставки, обновления и удаления (LINQ to SQL).

Для целей данного пошагового руководства будут использованы два метода, которые были сопоставлены с хранимыми процедурами в образце базы данных Northwind: CustOrdersDetail и CustOrderHist. Сопоставление осуществляется при запуске программы командной строки SQLMetal для создания файла C#. Дополнительные сведения см. в разделе "Предварительные требования" далее в этом руководстве.

В пошаговом руководстве не используется Сред. Объектно-реляционный конструктор. Разработчики, использующие Visual Studio, могут также использовать Сред. Объектно-реляционный конструктор для реализации функций хранимых процедур. Дополнительные сведения см. в разделах Реляционный конструктор объектов и Реляционный конструктор объектов и Реляционный конструктор объектов.

Bb399407.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Это пошаговое руководство было написано с использованием параметров разработки Visual C#.

Предварительные требования

Необходимо выполнить следующие требования.

  • Для хранения файлов используется выделенная папка ("c:\linqtest7"). Прежде чем приступить к выполнению задач, создайте такую папку.

  • Наличие учебной базы данных Northwind.

    Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе Загрузка образцов баз данных (LINQ to SQL). После загрузки базы данных скопируйте файл northwnd.mdf в папку c:\linqtest7.

  • Наличие файла кода C#, созданного из базы данных Northwind.

    Данное пошаговое руководство было написано с использованием средства SqlMetal со следующей командной строкой:

    sqlmetal /code:"c:\linqtest7\northwind.cs" /language:csharp "c:\linqtest7\northwnd.mdf" /sprocs /functions /pluralize

    Дополнительные сведения см. в разделе Средство создания кода (SqlMetal.exe).

Общие сведения

Данное пошаговое руководство состоит из шести основных задач.

  • Настройка решения LINQ to SQL в среде Visual Studio.

  • Добавление сборки System.Data.Linq в проект.

  • Добавление файла кода базы данных в проект.

  • Создание подключения к базе данных.

  • Настройка пользовательского интерфейса.

  • Запуск и тестирование приложения.

Создание решения LINQ to SQL

В первой задаче создается решение Visual Studio, которое содержит ссылки, необходимые для построения и выполнения проекта LINQ to SQL.

Создание решения LINQ to SQL

  1. В меню Файл среды Visual Studio укажите пункт Создать и выберите команду Проект.

  2. В диалоговом окне Создание проекта в области Тип проекта выберите Visual C#.

  3. В области Шаблоны щелкните Приложение Windows Forms.

  4. В поле Имя введите SprocOnlyApp.

  5. В поле Расположение выберите папку для сохранения файлов проекта.

  6. Нажмите кнопку OK.

    Откроется конструктор Windows Forms.

Добавление ссылки на сборку LINQ to SQL

Сборка LINQ to SQL не включается в стандартный шаблон приложения Windows Forms. Сборку необходимо добавить самостоятельно, выполнив приведенные ниже действия.

Добавление сборки System.Data.Linq.dll

  1. В Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку.

  2. В диалоговом окне Добавление ссылки щелкните .NET, выберите сборку System.Data.Linq, а затем нажмите кнопку ОК.

    Сборка будет добавлена в проект.

Добавление файла кода Northwind в проект

При выполнении действий этого шага предполагается, что для создания файла кода из учебной базы данных Northwind использовалась программа SQLMetal. Дополнительные сведения см. в разделе "Предварительные требования" ранее в этом руководстве.

Добавление файла кода northwind в проект

  1. В меню Проект выберите команду Добавить существующий элемент.

  2. В диалоговом окне Добавление существующего элемента перейдите к файлу c:\linqtest7\northwind.cs и нажмите кнопку Добавить.

    Файл northwind.cs будет добавлен в проект.

Создание подключения к базе данных.

На этом этапе определяется подключение к учебной базе данных Northwind. В качестве пути используется "c:\linqtest7\northwnd.mdf".

Создание подключения к базе данных.

  1. В обозревателе решений щелкните правой кнопкой мыши файл Form1.cs и выберите пункт Перейти к коду.

  2. Введите следующий код в класс Form1:

    Northwnd db = new Northwnd(@"c:\linqtest7\northwnd.mdf");
    

Настройка пользовательского интерфейса

В этой задаче настраивается интерфейс, с помощью которого пользователи могут выполнять хранимые процедуры для получения доступа к данным в базе данных. В приложении, разрабатываемом с помощью настоящего пошагового руководства, пользователи могут получать доступ к данным в базе данных только с помощью хранимых процедур, внедренных в приложение.

Настройка пользовательского интерфейса

  1. Вернитесь к конструктору Windows Forms Designer (Form1.cs[Design]).

  2. В меню Вид выберите пункт Панель элементов.

    Откроется панель элементов.

    Bb399407.alert_note(ru-ru,VS.90).gifПримечание.

    Щелкните значок канцелярской кнопки Автоматически скрывать, чтобы оставить панель элементов открытой при выполнении оставшихся действий данного раздела.

  3. Перетащите две кнопки, два текстовых поля и две подписи с панели элементов в форму Form1.

    Расположите элементы управления в соответствии с показанным здесь рисунком. Увеличьте размер формы Form1, чтобы разместить все элементы управления.

  4. Щелкните правой кнопкой мыши подпись label1 и выберите пункт Свойства.

  5. Введите для свойства Текст вместо label1 значение Введите код заказа:.

  6. Аналогичным образом для подписи label2 измените значение свойства Текст с label2 на Введите код клиента:.

  7. Точно так же измените свойство Текст для кнопки button1 на значение Сведения о заказе.

  8. Измените свойство Текст для кнопки button2 на значение История заказа.

    Расширьте элементы управления "Кнопка", чтобы отображался весь текст.

Диалоговое окно

Обработка нажатий кнопки

  1. Дважды щелкните кнопку Подробности заказа в форме Form1, чтобы открыть обработчик событий "button1" в редакторе кода.

  2. Введите в обработчик кнопки button1 следующий код:

    // Declare a variable to hold the contents of
    // textBox1 as an argument for the stored
    // procedure.
    string param = textBox1.Text;
    
    // Declare a variable to hold the results
    // returned by the stored procedure.
    var custquery = db.CustOrdersDetail(Convert.ToInt32(param));
    
    // Execute the stored procedure and display the results.
    string msg = "";
    foreach (CustOrdersDetailResult custOrdersDetail in custquery)
    {
        msg = msg + custOrdersDetail.ProductName + "\n";
    }
    if (msg == "")
        msg = "No results.";
    MessageBox.Show(msg);
    
    // Clear the variables before continuing.
    param = "";
    textBox1.Text = "";
    
  3. Затем дважды щелкните кнопку button2 в форме Form1, чтобы открыть обработчик событий button2.

  4. Введите в обработчик кнопки button2 следующий код:

    // Comments in the code for button2 are the same
    // as for button1.
    string param = textBox2.Text;
    
    var custquery = db.CustOrderHist(param);
    
    string msg = "";
    foreach (CustOrderHistResult custOrdHist in custquery)
    {
        msg = msg + custOrdHist.ProductName + "\n";
    }
    MessageBox.Show(msg);
    
    param = "";
    textBox2.Text = "";
    

Тестирование приложения

Теперь необходимо протестировать приложение. Обратите внимание, что все обращения к хранилищу данных ограничены теми действиями, которые могут выполняться двумя хранимыми процедурами. Эти действия заключаются в возвращении продуктов, включенных в заказ с введенным кодом, или истории продуктов, заказанных клиентом с введенным кодом.

Тестирование приложения

  1. Нажмите клавишу F5, чтобы начать отладку.

    Откроется форма "Form1".

  2. В поле Введите код заказа введите 10249 и нажмите кнопку Подробности заказа.

    В окне сообщения будет отображен список продуктов, включенных в заказ 10249.

    Нажмите кнопку OК, чтобы закрыть окно сообщения.

  3. В поле Введите код клиента введите ALFKI и нажмите кнопку История заказа.

    Откроется окно сообщения, в котором отображается история заказа для клиента ALFKI.

    Нажмите кнопку OК, чтобы закрыть окно сообщения.

  4. В поле Введите код заказа введите 123 и нажмите кнопку Сведения о заказе.

    Откроется окно сообщения, в котором отображается текст "Нет результатов".

    Нажмите кнопку OК, чтобы закрыть окно сообщения.

  5. В меню Отладка выберите пункт Остановить отладку.

    Сеанс отладки закрывается.

  6. Если проверка завершена, можно выбрать команду Закрыть проект в меню Файл и сохранить проект при появлении соответствующего запроса.

Следующие действия

Этот проект можно улучшить, выполнив некоторые изменения. Например, можно создать поле со списком доступных хранимых процедур и разрешить пользователю выбирать процедуру для выполнения. Можно также записывать выходные данных отчетов в текстовый файл.

См. также

Основные понятия

Обучение с помощью пошаговых руководств (LINQ to SQL)

Другие ресурсы

Хранимые процедуры (LINQ to SQL)