Поделиться через


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

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

ПримечаниеПримечание

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

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

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

ПримечаниеПримечание

На вашем компьютере названия некоторых элементов интерфейса пользователя 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. Нажмите кнопку ОК.

    Откроется конструктор 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. В меню Вид выберите пункт Панель элементов.

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

    ПримечаниеПримечание

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

  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.

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

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