Упражнение 3. Использование хранимых процедур
В данном упражнении рассматривается основной сценарий LINQ to SQL для получения доступа к данным, выполняя только хранимые процедуры. Этот метод часто используется администраторами баз данных для ограничения способов получения доступа к хранилищам данных.
В упражнении все обращения к хранилищу данных будут ограничены теми действиями, которые могут выполняться двумя хранимыми процедурами. Эти действия заключаются в возвращении продуктов, включенных в заказ с введенным кодом, или истории продуктов, заказанных клиентом с введенным кодом.
Предварительное действие:
Для выполнения дальнейших действий требуется наличие файла кода C#, созданного из базы данных Northwind. Если такого файла нет, выполните команду SqlMetal со следующей командной строкой (перед выполнением команды отсоедините базу данных Northwind):
sqlmetal /code:"c:\SQL Server 2000 Sample Databases\northwind.cs" /language:csharp "c:\SQL Server 2000 Sample Databases\northwnd.mdf" /sprocs /functions /pluralize
1. Создайте новое WinForms-приложение (назовите его LINQsqlSproc).
2. Добавьте ссылку на сборку System.Data.Linq/
3. Добавьте файл northwind.cs в проект.
4. Создайте подключения к базе данных – введите следующий код в класс формы (может быть другой путь к файлу данных):
Northwnd db = new Northwnd(@"c:\SQL Server 2000 Sample Databases\northwnd.mdf");
5. Перенесите две кнопки, два текстовых поля и две подписи с панели элементов на форму Form1.
6. Расположите элементы управления по своему усмотрению. При необходимости увеличьте размер формы, чтобы разместить все элементы управления.
|
|
7. Для первой подписи label1 установите значение свойства Текст значение Введите код заказа, для второй подписи label2 – Введите код клиента.
8. Для кнопок установите значение свойству Текст: Подробности заказа и История заказа.
9. Создайте обработчик события Click кнопки Подробности заказа и реализуйте следующую функциональность:
a. Объявите переменную для хранения содержимого textBox1 в качестве аргумента для хранимой процедуры:
string param = textBox1.Text;
b. Объявите переменную для хранения результатов возвращаемых хранимой процедурой CustOrdersDetail:
var custquery = db.CustOrdersDetail(Convert.ToInt32(param));
c. Выполните хранимую процедуру и отобразите результаты:
string msg = "";
foreach (CustOrdersDetailResult custOrdersDetail in custquery)
{
msg = msg + custOrdersDetail.ProductName + "\n";
}
if (msg == "")
msg = "No results.";
MessageBox.Show(msg);
d. Очистите переменные для дальнейшего использования:
param = "";
textBox1.Text = "";
10. Создайте обработчик события Click кнопки История заказа и реализуйте функциональность подобную для кнопки Подробности заказа для хранимой процедуры CustOrderHist:
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 = "";
11. Запустите и протестируйте приложение:
a. В поле Введите код заказа введите 10249 и нажмите кнопку Подробности заказа. В окне сообщения будет отображен список продуктов, включенных в заказ 10249.
b. В поле Введите код клиента введите ALFKI и нажмите кнопку История заказа. Откроется окно сообщения, в котором отображается история заказа для клиента ALFKI.
c. В поле Введите код заказа введите 123 и нажмите кнопку Сведения о заказе. Откроется окно сообщения, в котором отображается текст "Нет результатов".
Упражнение 4. Автоматическое создание объектов отображения с помощью Объектно-реляционного конструктора
В этом упражнении применяется реляционный конструктор объектов (Object Relational Designer) для автоматического создания объектной модели из метаданных существующей базы.
1. Создайте новое WinForms-приложение (назовите его LINQsql_m).
2. На форму перенесите кнопку (свойству text укажите значение Десять лучших) и ListView.
3. Настройте ListView для дальнейшей работы: в свойстве Columns добавьте два столбца с заголовками (свойство text): Ten Most и UnitPrice, свойству View установите вид отображения Details.
4. Добавьте в проект класс – файл LINQ to SQL classes, назовите его DataClassesProc.dbml.
|
|
5. В окне Server Explorer разверните дерево базы данных Northwind и перетащите хранимую процедуру Ten Most Expensive Products. Эта хранимая процедура извлекает из таблицы Products 10 самых дорогих продуктов и их цены.
6. В обработчике события Click кнопки Десять лучших укажите следующий код:
var db = new DataClassesProcDataContext();
foreach (var r in db.Ten_Most_Expensive_Products())
{
ListViewItem item =
listView1.Items.Add(r.TenMostExpensiveProducts.ToString());
item.SubItems.Add(r.UnitPrice.ToString());
}
7. Обратите внимание, что входная точка в базу данных теперь создается конструктором класса DataClassesProcDataContext (в общем случае класс будет называться так: {имя файла отображения} DataContext), которому больше не нужно передавать параметром строку соединения в явном виде.
8. Запустите и протестируйте приложение. По клику кнопки 10 самых дорогих продуктов и их цены отобразятся в списке.
ADO.NET Entity Framework
Дата добавления: 2019-02-26; просмотров: 201; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!