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


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

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

Примечание.

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

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

Это пошаговое руководство не зависит от реляционный конструктор объектов. Разработчики, использующие Visual Studio, также могут использовать конструктор O/R для реализации функций хранимой процедуры. См . статью "Инструменты LINQ to SQL" в Visual Studio.

Примечание.

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

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

Необходимые компоненты

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

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

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

    Если база данных не установлена на компьютере разработчика, загрузите ее с веб-узла Центра загрузки Майкрософт. Инструкции см. в разделе "Скачивание примеров баз данных". После загрузки базы данных скопируйте файл 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 (Form1.cs[конструктор]).

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

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

    Примечание.

    Нажмите кнопку "АвтоХидент ", чтобы сохранить панель элементов открытой во время выполнения оставшихся действий в этом разделе.

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

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

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

  5. Измените свойство Text с label1 на ВВОД OrderID:.

  6. Таким же образом для label2 измените свойство Text с label2 на Ввод CustomerID:.

  7. Таким же образом измените свойство Text на button1 на Order Details.

  8. Измените свойство Text для button2 на Order History.

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

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

  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. Теперь дважды щелкните кнопку2 в 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. В поле Ввод orderID введите 10249и нажмите кнопку "Сведения о заказе".

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

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

  3. В поле Ввод CustomerID введите ALFKIи нажмите кнопку "Журнал заказов".

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

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

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

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

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

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

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

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

Next Steps

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

См. также