Przewodnik: Tylko przy użyciu procedur składowanych (C#)
Ten przewodnik zawiera podstawowy pełny scenariusz LINQ to SQL umożliwiający uzyskiwanie dostępu do danych przez wykonywanie tylko procedur składowanych. Takie podejście jest często używane przez administratorów baz danych w celu ograniczenia sposobu uzyskiwania dostępu do magazynu danych.
Uwaga
Można również użyć procedur składowanych w aplikacjach LINQ to SQL, aby zastąpić domyślne zachowanie, szczególnie w przypadku Create
procesów , Update
i Delete
. Aby uzyskać więcej informacji, zobacz Dostosowywanie operacji wstawiania, aktualizowania i usuwania.
Na potrzeby tego przewodnika użyjesz dwóch metod mapowanych na procedury składowane w przykładowej bazie danych Northwind: CustOrdersDetail i CustOrderHist. Mapowanie odbywa się po uruchomieniu narzędzia wiersza polecenia SqlMetal w celu wygenerowania pliku C#. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne w dalszej części tego przewodnika.
Ten przewodnik nie opiera się na Projektant relacyjnych obiektów. Deweloperzy korzystający z programu Visual Studio mogą również używać Projektant O/R do implementowania funkcji procedury składowanej. Zobacz LINQ to SQL Tools in Visual Studio (Narzędzia LINQ to SQL Tools w programie Visual Studio).
Uwaga
Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
Ten przewodnik został napisany przy użyciu programu Visual C# Development Ustawienia.
Wymagania wstępne
Ten przewodnik wymaga następujących elementów:
Ten przewodnik używa dedykowanego folderu ("c:\linqtest7") do przechowywania plików. Przed rozpoczęciem przewodnika utwórz ten folder.
Przykładowa bazy danych Northwind.
Jeśli nie masz tej bazy danych na komputerze dewelopera, możesz pobrać ją z witryny pobierania firmy Microsoft. Aby uzyskać instrukcje, zobacz Pobieranie przykładowych baz danych. Po pobraniu bazy danych skopiuj plik northwnd.mdf do folderu c:\linqtest7.
Plik kodu C# wygenerowany z bazy danych Northwind.
Ten przewodnik został napisany przy użyciu narzędzia SqlMetal z następującym wierszem polecenia:
sqlmetal /code:"c:\linqtest7\northwind.cs" /language:csharp "c:\linqtest7\northwnd.mdf" /sprocs /functions /pluralize
Aby uzyskać więcej informacji, zobacz SqlMetal.exe (Narzędzie generowania kodu).
Omówienie
Ten przewodnik składa się z sześciu głównych zadań:
Konfigurowanie rozwiązania LINQ to SQL w programie Visual Studio.
Dodawanie zestawu System.Data.Linq do projektu.
Dodawanie pliku kodu bazy danych do projektu.
Tworzenie połączenia z bazą danych.
Konfigurowanie interfejsu użytkownika.
Uruchamianie i testowanie aplikacji.
Tworzenie rozwiązania LINQ to SQL
W tym pierwszym zadaniu utworzysz rozwiązanie programu Visual Studio zawierające niezbędne odwołania do kompilowania i uruchamiania projektu LINQ to SQL.
Aby utworzyć rozwiązanie LINQ to SQL
W menu Plik programu Visual Studio wskaż polecenie Nowy, a następnie kliknij pozycję Projekt.
W okienku Typy projektów w oknie dialogowym Nowy projekt kliknij pozycję Visual C#.
W okienku Szablony kliknij pozycję Aplikacja formularzy systemu Windows.
W polu Nazwa wpisz SprocOnlyApp.
W polu Lokalizacja sprawdź, gdzie chcesz przechowywać pliki projektu.
Kliknij przycisk OK.
Zostanie otwarty Projektant Windows Forms.
Dodawanie odwołania do zestawu LINQ to SQL
Zestaw LINQ to SQL nie jest uwzględniony w standardowym szablonie aplikacji Windows Forms. Musisz dodać zestaw samodzielnie, jak wyjaśniono w poniższych krokach:
Aby dodać System.Data.Linq.dll
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania, a następnie kliknij polecenie Dodaj odwołanie.
W oknie dialogowym Dodawanie odwołania kliknij pozycję .NET, kliknij zestaw System.Data.Linq, a następnie kliknij przycisk OK.
Zestaw jest dodawany do projektu.
Dodawanie pliku kodu Northwind do projektu
W tym kroku przyjęto założenie, że użyto narzędzia SqlMetal do wygenerowania pliku kodu z przykładowej bazy danych Northwind. Aby uzyskać więcej informacji, zobacz sekcję Wymagania wstępne we wcześniejszej części tego przewodnika.
Aby dodać plik kodu northwind do projektu
W menu Projekt kliknij pozycję Dodaj istniejący element.
W oknie dialogowym Dodawanie istniejącego elementu przejdź do folderu c:\linqtest7\northwind.cs, a następnie kliknij przycisk Dodaj.
Plik northwind.cs jest dodawany do projektu.
Tworzenie Połączenie bazy danych
W tym kroku zdefiniujesz połączenie z przykładową bazą danych Northwind. W tym przewodniku jako ścieżki jest używana ścieżka "c:\linqtest7\northwnd.mdf".
Aby utworzyć połączenie z bazą danych
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy Form1.cs, a następnie kliknij polecenie Wyświetl kod.
Wpisz następujący kod w
Form1
klasie:Northwnd db = new Northwnd(@"c:\linqtest7\northwnd.mdf");
Konfigurowanie interfejsu użytkownika
W tym zadaniu skonfigurujesz interfejs, aby użytkownicy mogli wykonywać procedury składowane w celu uzyskania dostępu do danych w bazie danych. W aplikacjach opracowywanych za pomocą tego przewodnika użytkownicy mogą uzyskiwać dostęp do danych w bazie danych tylko przy użyciu procedur składowanych osadzonych w aplikacji.
Aby skonfigurować interfejs użytkownika
Wróć do Projektant formularzy systemu Windows (Form1.cs[Projektowanie]).
W menu Widok kliknij pozycję Przybornik.
Zostanie otwarty przybornik.
Uwaga
Kliknij pinezki AutoHide, aby zachować otwarty przybornik podczas wykonywania pozostałych kroków w tej sekcji.
Przeciągnij dwa przyciski, dwa pola tekstowe i dwie etykiety z przybornika na form1.
Rozmieść kontrolki tak jak na ilustracji towarzyszącej. Rozwiń pozycję Form1 , aby kontrolki można było łatwo dopasować.
Kliknij prawym przyciskiem myszy etykietę1, a następnie kliknij polecenie Właściwości.
Zmień właściwość Text z label1 na Enter OrderID:.
W ten sam sposób dla etykiety Label2 zmień właściwość Text z label2 na Enter CustomerID:.
W ten sam sposób zmień właściwość Text przycisku1 na Order Details.
Zmień właściwość Text przycisku 2 na Historia zamówień.
Poszerz kontrolki przycisku tak, aby cały tekst był widoczny.
Aby obsłużyć kliknięcia przycisku
Kliknij dwukrotnie pozycję Szczegóły zamówienia w formularzu Form1 , aby otworzyć procedurę obsługi zdarzeń button1 w edytorze kodu.
Wpisz następujący kod w procedurze
button1
obsługi:// 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 = "";
Teraz kliknij dwukrotnie przycisk2 w formularzu Form1 , aby otworzyć procedurę
button2
obsługiWpisz następujący kod w procedurze
button2
obsługi:// 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 = "";
Testowanie aplikacji
Teraz nadszedł czas na przetestowanie aplikacji. Należy pamiętać, że kontakt z magazynem danych jest ograniczony do jakichkolwiek działań, które mogą wykonać dwie procedury składowane. Te akcje mają zwrócić produkty dołączone do dowolnego wprowadzonego identyfikatora zamówienia lub zwrócić historię produktów uporządkowaną dla każdego wprowadzonego identyfikatora klienta.
Aby przetestować aplikację
Naciśnij klawisz F5, aby uruchomić debugowanie.
Pojawi się formularz Form1.
W polu Wprowadź identyfikator zamówienia wpisz
10249
, a następnie kliknij pozycję Szczegóły zamówienia.Pole komunikatu zawiera listę produktów uwzględnionych w zamówieniu 10249.
Kliknij przycisk OK , aby zamknąć okno komunikatu.
W polu Wprowadź CustomerID wpisz
ALFKI
, a następnie kliknij pozycję Historia zamówień.Zostanie wyświetlone okno komunikatu z listą historii zamówień dla klienta ALFKI.
Kliknij przycisk OK , aby zamknąć okno komunikatu.
W polu Wprowadź identyfikator zamówienia wpisz
123
, a następnie kliknij pozycję Szczegóły zamówienia.Zostanie wyświetlone okno komunikatu z komunikatem "Brak wyników".
Kliknij przycisk OK , aby zamknąć okno komunikatu.
W menu Debugowanie kliknij pozycję Zatrzymaj debugowanie.
Sesja debugowania zostanie zamknięta.
Jeśli skończysz eksperymentować, możesz kliknąć pozycję Zamknij projekt w menu Plik i zapisać projekt po wyświetleniu monitu.
Następne kroki
Ten projekt można ulepszyć, wprowadzając pewne zmiany. Można na przykład wyświetlić listę dostępnych procedur składowanych w polu listy i wybrać procedury do wykonania. Możesz również przesłać strumieniowo dane wyjściowe raportów do pliku tekstowego.