Delen via


Overzicht: Alleen opgeslagen procedures gebruiken (C#)

Deze procedure biedt een eenvoudig end-to-end LINQ naar SQL-scenario voor toegang tot gegevens door alleen opgeslagen procedures uit te voeren. Deze methode wordt vaak gebruikt door databasebeheerders om te beperken hoe het gegevensarchief wordt geopend.

Notitie

U kunt ook opgeslagen procedures in LINQ gebruiken voor SQL-toepassingen om standaardgedrag te overschrijven, met name voor Create, Updateen Delete processen. Zie Invoegen, Bijwerken en Verwijderen aanpassen voor meer informatie.

Voor deze procedure gebruikt u twee methoden die zijn toegewezen aan opgeslagen procedures in de Northwind-voorbeelddatabase: CustOrdersDetail en CustOrderHist. De toewijzing vindt plaats wanneer u het opdrachtregelprogramma SqlMetal uitvoert om een C#-bestand te genereren. Zie de sectie Vereisten verderop in dit scenario voor meer informatie.

Deze procedure is niet afhankelijk van de relationele ontwerpfunctie voor objecten. Ontwikkelaars die Visual Studio gebruiken, kunnen ook de O/R Designer gebruiken om opgeslagen procedurefunctionaliteit te implementeren. Zie LINQ naar SQL Tools in Visual Studio.

Notitie

Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.

Dit scenario is geschreven met behulp van Visual C# Development Instellingen.

Vereisten

Voor dit scenario is het volgende vereist:

  • In dit scenario wordt gebruikgemaakt van een toegewezen map ('c:\linqtest7') voor het opslaan van bestanden. Maak deze map voordat u met de procedure begint.

  • De Northwind-voorbeelddatabase.

    Als u deze database niet op uw ontwikkelcomputer hebt, kunt u deze downloaden van de Microsoft-downloadsite. Zie Voorbeelddatabases downloaden voor instructies. Nadat u de database hebt gedownload, kopieert u het northwnd.mdf bestand naar de map c:\linqtest7.

  • Een C#-codebestand dat is gegenereerd op basis van de Northwind-database.

    Deze procedure is geschreven met behulp van het hulpprogramma SqlMetal met de volgende opdrachtregel:

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

    Zie SqlMetal.exe (hulpprogramma voor het genereren van code) voor meer informatie.

Overzicht

Deze procedure bestaat uit zes hoofdtaken:

  • De LINQ instellen op een SQL-oplossing in Visual Studio.

  • De System.Data.Linq-assembly toevoegen aan het project.

  • Voeg het databasecodebestand toe aan het project.

  • Een verbinding maken met de database.

  • De gebruikersinterface instellen.

  • De toepassing uitvoeren en testen.

Een LINQ maken naar SQL-oplossing

In deze eerste taak maakt u een Visual Studio-oplossing die de benodigde verwijzingen bevat om een LINQ te bouwen en uit te voeren naar een SQL-project.

Een LINQ naar SQL-oplossing maken

  1. Wijs in het menu Visual Studio-bestand de optie Nieuw aan en klik vervolgens op Project.

  2. Klik in het deelvenster Projecttypen in het dialoogvenster Nieuw project op Visual C#.

  3. Klik in het deelvenster Sjablonen op Windows Forms-toepassing.

  4. Typ SprocOnlyApp in het vak Naam.

  5. Controleer in het vak Locatie waar u uw projectbestanden wilt opslaan.

  6. Klik op OK.

    De Ontwerpfunctie voor Windows Forms wordt geopend.

Naslaginformatie over de LINQ toevoegen aan SQL Assembly

De LINQ naar SQL-assembly is niet opgenomen in de standaardsjabloon voor Windows Forms-toepassingen. U moet de assembly zelf toevoegen, zoals wordt uitgelegd in de volgende stappen:

System.Data.Linq.dll toevoegen

  1. Klik in Solution Explorer met de rechtermuisknop op Verwijzingen en klik vervolgens op Verwijzing toevoegen.

  2. Klik in het dialoogvenster Verwijzing toevoegen op .NET, klik op de assembly System.Data.Linq en klik vervolgens op OK.

    De assembly wordt toegevoegd aan het project.

Het Northwind-codebestand toevoegen aan het project

In deze stap wordt ervan uitgegaan dat u het hulpprogramma SqlMetal hebt gebruikt om een codebestand te genereren uit de Northwind-voorbeelddatabase. Zie de sectie Vereisten eerder in dit scenario voor meer informatie.

Het northwind-codebestand toevoegen aan het project

  1. Klik in het menu Project op Bestaand item toevoegen.

  2. Ga in het dialoogvenster Bestaand item toevoegen naar c:\linqtest7\northwind.cs en klik op Toevoegen.

    Het bestand northwind.cs wordt toegevoegd aan het project.

Een database maken Verbinding maken ion

In deze stap definieert u de verbinding met de Northwind-voorbeelddatabase. In dit scenario wordt 'c:\linqtest7\northwnd.mdf' gebruikt als het pad.

De databaseverbinding maken

  1. Klik in Solution Explorer met de rechtermuisknop op Form1.cs en klik vervolgens op Code weergeven.

  2. Typ de volgende code in de Form1 klasse:

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

De gebruikersinterface instellen

In deze taak stelt u een interface in, zodat gebruikers opgeslagen procedures kunnen uitvoeren voor toegang tot gegevens in de database. In de toepassingen die u met deze procedure ontwikkelt, hebben gebruikers alleen toegang tot gegevens in de database met behulp van de opgeslagen procedures die zijn ingesloten in de toepassing.

De gebruikersinterface instellen

  1. Ga terug naar Windows Forms Designer (Form1.cs[Ontwerp]).

  2. Klik in het menu Beeld op Werkset.

    De werkset wordt geopend.

    Notitie

    Klik op de punaise AutoHide om de werkset open te houden terwijl u de resterende stappen in deze sectie uitvoert.

  3. Sleep twee knoppen, twee tekstvakken en twee labels van de werkset naar Form1.

    Rangschik de besturingselementen zoals in de bijbehorende afbeelding. Vouw Form1 uit zodat de besturingselementen eenvoudig passen.

  4. Klik met de rechtermuisknop op label1 en klik vervolgens op Eigenschappen.

  5. Wijzig de eigenschap Tekst van label1 in OrderID invoeren:.

  6. Wijzig op dezelfde manier voor label2 de eigenschap Text van label2 in Enter CustomerID:.

  7. Wijzig op dezelfde manier de eigenschap Tekst voor knop1 in Ordergegevens.

  8. Wijzig de eigenschap Tekst voor knop2 in Ordergeschiedenis.

    Verbreed de knopbesturingselementen zodat alle tekst zichtbaar is.

Klikken op knop afhandelen

  1. Dubbelklik op Ordergegevens op Formulier1 om de gebeurtenis-handler button1 te openen in de code-editor.

  2. Typ de volgende code in de 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. Dubbelklik nu op knop2 op Form1 om de button2 handler te openen

  4. Typ de volgende code in de 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 = "";
    

De toepassing testen

Nu is het tijd om uw toepassing te testen. Houd er rekening mee dat uw contactpersoon met het gegevensarchief beperkt is tot de acties die door de twee opgeslagen procedures kunnen worden uitgevoerd. Deze acties zijn het retourneren van de producten die zijn opgenomen voor elke order-id die u invoert, of om een geschiedenis van producten te retourneren die zijn besteld voor elke klant-id die u invoert.

De toepassing testen

  1. Druk op F5 om de foutopsporing te starten.

    Formulier1 wordt weergegeven.

  2. Typ en klik in het vak 10249Order-id invoeren op Ordergegevens.

    Een berichtenvak bevat de producten die zijn opgenomen in bestelling 10249.

    Klik op OK om het berichtvak te sluiten.

  3. Typ en klik in het vak CustomerID invoeren op OrdergeschiedenisALFKI.

    Er wordt een berichtvak weergegeven met de ordergeschiedenis voor klant ALFKI.

    Klik op OK om het berichtvak te sluiten.

  4. Typ en klik in het vak 123Order-id invoeren op Ordergegevens.

    Er wordt een berichtvenster weergegeven met 'Geen resultaten'.

    Klik op OK om het berichtvak te sluiten.

  5. Klik in het menu Foutopsporing op Foutopsporing stoppen.

    De foutopsporingssessie wordt gesloten.

  6. Als u klaar bent met experimenteren, klikt u op Project sluiten in het menu Bestand en slaat u het project op wanneer u hierom wordt gevraagd.

Volgende stappen

U kunt dit project verbeteren door enkele wijzigingen aan te brengen. U kunt bijvoorbeeld beschikbare opgeslagen procedures weergeven in een keuzelijst en de gebruiker laten selecteren welke procedures moeten worden uitgevoerd. U kunt ook de uitvoer van de rapporten streamen naar een tekstbestand.

Zie ook