Exemplarische Vorgehensweise: Ausschließliches Verwenden von gespeicherten Prozeduren (C#)Walkthrough: Using Only Stored Procedures (C#)

Diese exemplarische Vorgehensweise stellt ein grundlegendes End-to-End-Szenario für LINQ to SQLLINQ to SQL für den Datenzugriff mithilfe von gespeicherten Prozeduren bereit.This walkthrough provides a basic end-to-end LINQ to SQLLINQ to SQL scenario for accessing data by executing stored procedures only. Dieser Ansatz wird oft von Datenbankadministratoren verwendet, um den Zugriff auf den Datenspeicher einzuschränken.This approach is often used by database administrators to limit how the datastore is accessed.

Hinweis

Sie können gespeicherte Prozeduren außerdem in LINQ to SQLLINQ to SQL-Anwendungen verwenden, um das Standardverhalten zu überschreiben. Dies gilt vor allem für die Prozesse Create, Update und Delete.You can also use stored procedures in LINQ to SQLLINQ to SQL applications to override default behavior, especially for Create, Update, and Delete processes. Weitere Informationen finden Sie unter Anpassen von INSERT-, Update- und Delete-Operationen.For more information, see Customizing Insert, Update, and Delete Operations.

Im Rahmen dieser exemplarischen Vorgehensweise verwenden Sie zwei Methoden, die in der Beispieldatenbank Northwind gespeicherten Prozeduren zugeordnet wurden: CustOrdersDetail und CustOrderHist.For purposes of this walkthrough, you will use two methods that have been mapped to stored procedures in the Northwind sample database: CustOrdersDetail and CustOrderHist. Die Zuordnung tritt auf, wenn Sie das SQLMetal-Befehlszeilentool ausführen, um eine C#-Datei zu generieren.The mapping occurs when you run the SqlMetal command-line tool to generate a C# file. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter unten in dieser exemplarischen Vorgehensweise.For more information, see the Prerequisites section later in this walkthrough.

Diese exemplarische Vorgehensweise basiert nicht auf Object Relational DesignerObject Relational Designer.This walkthrough does not rely on the Object Relational DesignerObject Relational Designer. Entwickler, die mit Visual StudioVisual Studio arbeiten, können auch O/R-DesignerO/R Designer verwenden, um die Funktionalität einer gespeicherten Prozedur zu implementieren.Developers using Visual StudioVisual Studio can also use the O/R-DesignerO/R Designer to implement stored procedure functionality. Finden Sie unter LINQ to SQL-Tools in Visual Studio.See LINQ to SQL Tools in Visual Studio.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig.The Visual Studio edition that you have and the settings that you use determine these elements. Weitere Informationen finden Sie unter Personalisieren der IDE.For more information, see Personalizing the IDE.

Diese exemplarische Vorgehensweise wurde mithilfe von Visual C#-Entwicklungseinstellungen geschrieben.This walkthrough was written by using Visual C# Development Settings.

Erforderliche KomponentenPrerequisites

Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:This walkthrough requires the following:

  • Diese exemplarische Vorgehensweise verwendet einen dedizierten Ordner ("c:\linqtest7") als Speicherort für Dateien.This walkthrough uses a dedicated folder ("c:\linqtest7") to hold files. Erstellen Sie diesen Ordner, bevor Sie die exemplarische Vorgehensweise starten.Create this folder before you begin the walkthrough.

  • Die Beispieldatenbank Northwind.The Northwind sample database.

    Befindet sich diese Datenbank nicht auf Ihrem Entwicklungscomputer, können Sie diese von der Microsoft Downloadsite herunterladen.If you do not have this database on your development computer, you can download it from the Microsoft download site. Anweisungen hierzu finden Sie unter Herunterladen von Beispieldatenbanken.For instructions, see Downloading Sample Databases. Nachdem Sie die Datenbank heruntergeladen haben, kopieren Sie die Datei northwnd.mdf in den Ordner c:\linqtest7.After you have downloaded the database, copy the northwnd.mdf file to the c:\linqtest7 folder.

  • Eine von der Datenbank Northwind generierte C#-Codedatei.A C# code file generated from the Northwind database.

    Diese exemplarische Vorgehensweise wurde mithilfe des SQLMetal-Tools mit der folgenden Befehlszeile geschrieben:This walkthrough was written by using the SqlMetal tool with the following command line:

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

    Weitere Informationen finden Sie unter SqlMetal.exe (Tool zur Codegenerierung).For more information, see SqlMetal.exe (Code Generation Tool).

ÜbersichtOverview

Diese exemplarische Vorgehensweise umfasst sechs Hauptaufgaben:This walkthrough consists of six main tasks:

  • Einrichten der LINQ to SQLLINQ to SQL-Lösung in Visual StudioVisual Studio.Setting up the LINQ to SQLLINQ to SQL solution in Visual StudioVisual Studio.

  • Hinzufügen der System.Data.Linq-Assembly zum ProjektAdding the System.Data.Linq assembly to the project.

  • Hinzufügen der Datenbank-Codedatei zum Projekt.Adding the database code file to the project.

  • Erstellen einer Verbindung mit der DatenbankCreating a connection with the database.

  • Einrichten der Benutzeroberfläche.Setting up the user interface.

  • Ausführen und Testen der Anwendung.Running and testing the application.

Erstellen einer LINQ to SQL-LösungCreating a LINQ to SQL Solution

In dieser ersten Aufgabe erstellen Sie eine Visual StudioVisual Studio-Lösung, die die erforderlichen Verweise zur Erstellung und Ausführung eines LINQ to SQLLINQ to SQL-Projekts enthält.In this first task, you create a Visual StudioVisual Studio solution that contains the necessary references to build and run a LINQ to SQLLINQ to SQL project.

So erstellen Sie eine LINQ to SQL-LösungTo create a LINQ to SQL solution

  1. Auf der Visual StudioVisual Studio Datei Sie im Menü neu, und klicken Sie dann auf Projekt.On the Visual StudioVisual Studio File menu, point to New, and then click Project.

  2. In der -Projekttypen im Bereich der neues Projekt (Dialogfeld), klicken Sie auf Visual C#-.In the Project types pane in the New Project dialog box, click Visual C#.

  3. Klicken Sie im Bereich Vorlagen auf Windows Forms-Anwendung.In the Templates pane, click Windows Forms Application.

  4. In der Namen geben SprocOnlyApp.In the Name box, type SprocOnlyApp.

  5. In der Speicherort Vergewissern Sie sich, wo die Projektdateien gespeichert werden sollen.In the Location box, verify where you want to store your project files.

  6. Klicken Sie auf OK.Click OK.

    Der Windows Forms Designer wird geöffnet.The Windows Forms Designer opens.

Hinzufügen des LINQ to SQL-AssemblyverweisesAdding the LINQ to SQL Assembly Reference

Die LINQ to SQLLINQ to SQL-Assembly ist nicht in der Standardvorlage für Windows Forms-Anwendungen enthalten.The LINQ to SQLLINQ to SQL assembly is not included in the standard Windows Forms Application template. Sie müssen die Assembly selbst hinzufügen. Siehe hierzu die folgenden Schritte:You will have to add the assembly yourself, as explained in the following steps:

So fügen Sie die Datei System.Data.Linq.dll hinzuTo add System.Data.Linq.dll

  1. In Projektmappen-Explorer, mit der rechten Maustaste Verweise, und klicken Sie dann auf Verweis hinzufügen.In Solution Explorer, right-click References, and then click Add Reference.

  2. In der Verweis hinzufügen (Dialogfeld), klicken Sie auf .NET, klicken Sie auf die System.Data.Linq-Assembly, und klicken Sie dann auf OK.In the Add Reference dialog box, click .NET, click the System.Data.Linq assembly, and then click OK.

    Dem Projekt wird die Assembly hinzugefügt.The assembly is added to the project.

Hinzufügen der Northwind-Codedatei zum Projekt.Adding the Northwind Code File to the Project

Bei diesem Schritt wird davon ausgegangen, dass Sie das SQLMetal-Tool zum Erzeugen einer Codedatei aus der Beispieldatenbank Northwind verwendet haben.This step assumes that you have used the SqlMetal tool to generate a code file from the Northwind sample database. Weitere Informationen finden Sie im Abschnitt zu Voraussetzungen weiter oben in dieser exemplarischen Vorgehensweise.For more information, see the Prerequisites section earlier in this walkthrough.

So fügen Sie die Northwind-Codedatei dem Projekt hinzu.To add the northwind code file to the project

  1. Auf der Projekt Menü klicken Sie auf vorhandenes Element hinzufügen.On the Project menu, click Add Existing Item.

  2. In der vorhandenes Element hinzufügen c:\linqtest7\northwind.cs ANS (Dialogfeld), und klicken Sie dann auf hinzufügen.In the Add Existing Item dialog box, move to c:\linqtest7\northwind.cs, and then click Add.

    Die Datei northwind.cs wird dem Projekt hinzugefügt.The northwind.cs file is added to the project.

Erstellen von DatenbankverbindungenCreating a Database Connection

In diesem Schritt definieren Sie die Verbindung zur Beispieldatenbank Northwind.In this step, you define the connection to the Northwind sample database. Diese exemplarische Vorgehensweise verwendet "c:\linqtest7\northwnd.mdf" als Pfad.This walkthrough uses "c:\linqtest7\northwnd.mdf" as the path.

So erstellen Sie die DatenbankverbindungTo create the database connection

  1. In Projektmappen-Explorer, mit der rechten Maustaste "Form1.cs", und klicken Sie dann auf Code anzeigen.In Solution Explorer, right-click Form1.cs, and then click View Code.

  2. Geben Sie den folgenden Code in die Form1-Klasse ein:Type the following code into the Form1 class:

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

Einrichten der BenutzeroberflächeSetting up the User Interface

In diesem Schritt richten Sie eine Benutzeroberfläche ein, sodass Benutzer durch Ausführen gespeicherter Prozeduren auf die Daten in der Datenbank zugreifen können.In this task you set up an interface so that users can execute stored procedures to access data in the database. In den von Ihnen hier entwickelten Anwendungen können Benutzer nur mithilfe der in der Anwendung eingebetteten gespeicherten Prozeduren auf die Daten zugreifen.In the applications that you are developing with this walkthrough, users can access data in the database only by using the stored procedures embedded in the application.

So richten Sie die Benutzeroberfläche einTo set up the user interface

  1. Zurück zu den Windows Forms-Designer (Form1.cs]).Return to the Windows Forms Designer (Form1.cs[Design]).

  2. Klicken Sie im Menü Ansicht auf Toolbox.On the View menu, click Toolbox.

    Die Toolbox wird geöffnet.The toolbox opens.

    Hinweis

    Klicken Sie auf die Taskleisten PIN Toolbox geöffnet zu lassen, während Sie die folgenden Schritte in diesem Abschnitt.Click the AutoHide pushpin to keep the toolbox open while you perform the remaining steps in this section.

  3. Ziehen Sie zwei Schaltflächen, zwei Textfelder und zwei Bezeichnungen von der Toolbox auf Form1.Drag two buttons, two text boxes, and two labels from the toolbox onto Form1.

    Ordnen Sie die Steuerelemente wie in der Abbildung an.Arrange the controls as in the accompanying illustration. Erweitern Sie Form1 , damit die Steuerelemente problemlos angepasst.Expand Form1 so that the controls fit easily.

  4. Mit der rechten Maustaste label1, und klicken Sie dann auf Eigenschaften.Right-click label1, and then click Properties.

  5. Ändern der Text Eigenschaft von label1 auf Enter OrderID:.Change the Text property from label1 to Enter OrderID:.

  6. Auf die gleiche Weise für label2, ändern Sie die Text Eigenschaft von label2 zu Enter CustomerID:.In the same way for label2, change the Text property from label2 to Enter CustomerID:.

  7. Ändern Sie auf die gleiche Weise die Text -Eigenschaft für button1 auf Bestelldetails.In the same way, change the Text property for button1 to Order Details.

  8. Ändern der Text -Eigenschaft für button2 auf Bestellverlauf.Change the Text property for button2 to Order History.

    Erweitern Sie die Schaltflächen-Steuerelemente, damit der gesamte Text sichtbar ist.Widen the button controls so that all the text is visible.

Verarbeitung von Mausklicks auf die SchaltflächenTo handle button clicks

  1. Doppelklicken Sie auf Bestelldetails auf Form1 um den button1-Ereignishandler im Codeeditor zu öffnen.Double-click Order Details on Form1 to open the button1 event handler in the code editor.

  2. Geben Sie den folgenden Code in den button1-Ereignishandler ein.Type the following code into the button1 handler:

    // 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. Doppelklicken Sie jetzt auf button2 auf Form1 So öffnen die button2 HandlerNow double-click button2 on Form1 to open the button2 handler

  4. Geben Sie den folgenden Code in den button2-Ereignishandler ein.Type the following code into the button2 handler:

    // 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 = "";
    

Testen der AnwendungTesting the Application

Nun können Sie die Anwendung testen.Now it is time to test your application. Beachten Sie, dass die Verbindung zum Datastore auf die Aktionen der beiden gespeicherten Prozeduren beschränkt ist.Note that your contact with the datastore is limited to whatever actions the two stored procedures can take. Diese Aktionen geben die Produkte zu der von Ihnen eingegebenen OrderID und die Produkthistorie zu der von Ihnen eingegebenen CustomerID zurück.Those actions are to return the products included for any orderID you enter, or to return a history of products ordered for any CustomerID you enter.

So testen Sie die AnwendungTo test the application

  1. Drücken Sie die Taste F5, um mit dem Debuggen zu beginnen.Press F5 to start debugging.

    Form1 wird angezeigt.Form1 appears.

  2. In der Enter OrderID geben 10249, und klicken Sie dann auf Bestelldetails.In the Enter OrderID box, type 10249, and then click Order Details.

    Ein Meldungsfeld listet die in Bestellung 10249 enthaltenen Produkte auf.A message box lists the products included in order 10249.

    Klicken Sie auf OK um das Dialogfeld zu schließen.Click OK to close the message box.

  3. In der Enter CustomerID geben ALFKI, und klicken Sie dann auf Bestellverlauf.In the Enter CustomerID box, type ALFKI, and then click Order History.

    Ein Meldungsfeld mit der Bestellhistorie für den Kunden ALFKI wird angezeigt.A message box appears that lists the order history for customer ALFKI.

    Klicken Sie auf OK um das Dialogfeld zu schließen.Click OK to close the message box.

  4. In der Enter OrderID geben 123, und klicken Sie dann auf Bestelldetails.In the Enter OrderID box, type 123, and then click Order Details.

    Die Meldung "Keine Ergebnisse" erscheint.A message box appears that displays "No results."

    Klicken Sie auf OK um das Dialogfeld zu schließen.Click OK to close the message box.

  5. Auf der Debuggen Menü klicken Sie auf Beenden des Debuggens.On the Debug menu, click Stop debugging.

    Die Debugsitzung schließt.The debug session closes.

  6. Wenn Sie Ihre Versuche abgeschlossen haben, können Sie klicken Projekt schließen auf die Datei Menü, und speichern Sie das Projekt aus, wenn Sie aufgefordert werden.If you have finished experimenting, you can click Close Project on the File menu, and save your project when you are prompted.

Nächste SchritteNext Steps

Sie können dieses Projekt mit einigen Änderungen erweitern.You can enhance this project by making some changes. Sie können beispielsweise die verfügbaren gespeicherten Prozeduren in einem Listenfeld aufführen, sodass der Benutzer diese auswählen kann.For example, you could list available stored procedures in a list box and have the user select which procedures to execute. Sie könnten auch die Ausgabe von Berichten in eine Textdatei umleiten.You could also stream the output of the reports to a text file.

Siehe auchSee Also

Lernen durch exemplarische VorgehensweisenLearning by Walkthroughs
Gespeicherte ProzedurenStored Procedures