Genomgång: Använda endast lagrade procedurer (Visual Basic)
Den här genomgången innehåller ett grundläggande LINQ till SQL-scenario från slutpunkt till slutpunkt för åtkomst till data endast med hjälp av lagrade procedurer. Den här metoden används ofta av databasadministratörer för att begränsa hur datalagringen används.
Kommentar
Du kan också använda lagrade procedurer i LINQ till SQL-program för att åsidosätta standardbeteendet, särskilt för Create
, Update
och Delete
processer. Mer information finns i Anpassa infognings-, uppdaterings- och borttagningsåtgärder.
I den här genomgången använder du två metoder som har mappats till lagrade procedurer i Northwind-exempeldatabasen: CustOrdersDetail och CustOrderHist. Mappningen sker när du kör kommandoradsverktyget SqlMetal för att generera en Visual Basic-fil. Mer information finns i avsnittet Förutsättningar senare i den här genomgången.
Den här genomgången förlitar sig inte på objektrelationsdesignern. Utvecklare som använder Visual Studio kan också använda O/R Designer för att implementera funktioner för lagrade procedurer. Se LINQ till SQL Tools i Visual Studio.
Kommentar
Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.
Den här genomgången skrevs med hjälp av Visual Basic Development Inställningar.
Förutsättningar
Den här genomgången kräver följande:
Den här genomgången använder en dedikerad mapp ("c:\linqtest3") för att lagra filer. Skapa den här mappen innan du påbörjar genomgången.
Northwind-exempeldatabasen.
Om du inte har den här databasen på utvecklingsdatorn kan du ladda ned den från Microsofts nedladdningswebbplats. Anvisningar finns i Ladda ned exempeldatabaser. När du har laddat ned databasen kopierar du northwnd.mdf-filen till mappen c:\linqtest3.
En Visual Basic-kodfil som genererats från Northwind-databasen.
Den här genomgången skrevs med hjälp av SqlMetal-verktyget med följande kommandorad:
sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize
Mer information finns i SqlMetal.exe (kodgenereringsverktyg).
Översikt
Den här genomgången består av sex huvuduppgifter:
Konfigurera LINQ till SQL-lösningen i Visual Studio.
Lägga till sammansättningen System.Data.Linq i projektet.
Lägga till databaskodfilen i projektet.
Skapa en anslutning till databasen.
Konfigurera användargränssnittet.
Köra och testa programmet.
Skapa en LINQ till SQL-lösning
I den första uppgiften skapar du en Visual Studio-lösning som innehåller de referenser som krävs för att skapa och köra ett LINQ-projekt till SQL.
Så här skapar du en LINQ-till SQL-lösning
Klicka på Nytt projekt på Menyn Visual Studio-fil.
I fönstret Projekttyper i dialogrutan Nytt projekt expanderar du Visual Basic och klickar sedan på Windows.
I fönstret Mallar klickar du på Windows-formulärprogram.
I rutan Namn skriver du SprocOnlyApp.
Klicka på OK.
Windows Forms Designer öppnas.
Lägga till LINQ i SQL-sammansättningsreferensen
LINQ till SQL-sammansättningen ingår inte i standardmallen för Windows Forms-program. Du måste lägga till sammansättningen själv, enligt beskrivningen i följande steg:
Så här lägger du till System.Data.Linq.dll
I Solution Explorer klickar du på Visa alla filer.
Högerklicka på Referenser i Solution Explorer och klicka sedan på Lägg till referens.
I dialogrutan Lägg till referens klickar du på .NET, klickar på sammansättningen System.Data.Linq och klickar sedan på OK.
Sammansättningen läggs till i projektet.
Lägga till Northwind-kodfilen i projektet
Det här steget förutsätter att du har använt SqlMetal-verktyget för att generera en kodfil från Northwind-exempeldatabasen. Mer information finns i avsnittet Förutsättningar tidigare i den här genomgången.
Så här lägger du till northwind-kodfilen i projektet
På Projekt-menyn klickar du på Lägg till befintligt objekt.
I dialogrutan Lägg till befintligt objekt går du till c:\linqtest3\northwind.vb och klickar sedan på Lägg till.
Filen northwind.vb läggs till i projektet.
Skapa en databas Anslut ion
I det här steget definierar du anslutningen till Northwind-exempeldatabasen. Den här genomgången använder "c:\linqtest3\northwnd.mdf" som sökväg.
Så här skapar du databasanslutningen
Högerklicka på Form1.vb i Solution Explorer och klicka sedan på Visa kod.
Class Form1
visas i kodredigeraren.Skriv in följande kod i kodblocket
Form1
:Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
Konfigurera användargränssnittet
I den här uppgiften skapar du ett gränssnitt så att användarna kan köra lagrade procedurer för att komma åt data i databasen. I programmet som du utvecklar med den här genomgången kan användarna endast komma åt data i databasen med hjälp av de lagrade procedurerna som är inbäddade i programmet.
Så här konfigurerar du användargränssnittet
Gå tillbaka till Windows Forms Designer (Form1.vb[Design]).
På menyn Visa klickar du på Verktygslåda.
Verktygslådan öppnas.
Kommentar
Klicka på autohide-pushpinen för att hålla verktygslådan öppen medan du utför de återstående stegen i det här avsnittet.
Dra två knappar, två textrutor och två etiketter från verktygslådan till Form1.
Ordna kontrollerna som i den medföljande bilden. Expandera Formulär1 så att kontrollerna passar enkelt.
Högerklicka på Etikett1 och klicka sedan på Egenskaper.
Ändra egenskapen Text från Label1 till Ange OrderID:.
På samma sätt som för Label2 ändrar du egenskapen Text från Label2 till Ange CustomerID:.
På samma sätt ändrar du egenskapen Text för Button1 till Order Details (Beställningsinformation).
Ändra egenskapen Text för Button2 till OrderHistorik.
Bredda knappkontrollerna så att all text visas.
Så här hanterar du knappklick
Dubbelklicka på Beställningsinformation på Formulär1 för att skapa
Button1
händelsehanteraren och öppna kodredigeraren.Skriv in följande kod i
Button1
hanteraren:' Declare a variable to hold the contents of ' TextBox1 as an argument for the stored ' procedure. Dim parm As String = TextBox1.Text ' Declare a variable to hold the results returned ' by the stored procedure. Dim custQuery = db.CustOrdersDetail(parm) ' Clear the message box of previous results. Dim msg As String = "" Dim response As MsgBoxResult ' Execute the stored procedure and store the results. For Each custOrdersDetail As CustOrdersDetailResult In custQuery msg &= custOrdersDetail.ProductName & vbCrLf Next ' Display the results. If msg = "" Then msg = "No results." End If response = MsgBox(msg) ' Clear the variables before continuing. parm = "" TextBox1.Text = ""
Dubbelklicka nu på Knapp2 på Formulär1 för att skapa
Button2
händelsehanteraren och öppna kodredigeraren.Skriv in följande kod i
Button2
hanteraren:' Comments in the code for Button2 are the same ' as for Button1. Dim parm As String = TextBox2.Text Dim custQuery2 = db.CustOrderHist(parm) Dim msg As String = "" Dim response As MsgBoxResult For Each custOrdHist As CustOrderHistResult In custQuery2 msg &= custOrdHist.ProductName & vbCrLf Next If msg = "" Then msg = "No results." End If response = MsgBox(msg) parm = "" TextBox2.Text = ""
Testa programmet
Nu är det dags att testa programmet. Observera att din kontakt med datalagringen är begränsad till de åtgärder som de två lagrade procedurerna kan vidta. Dessa åtgärder är att returnera de produkter som ingår för alla orderID som du anger, eller att returnera en historik över produkter som beställts för alla CustomerID du anger.
Testa programmet
Starta felsökningen genom att trycka på F5.
Formulär1 visas.
I rutan Ange OrderID skriver du 10249 och klickar sedan på Orderinformation.
I en meddelanderuta visas de produkter som ingår i ordning 10249.
Stäng meddelanderutan genom att klicka på OK .
I rutan Ange CustomerID skriver du
ALFKI
och klickar sedan på Orderhistorik.En meddelanderuta visar orderhistoriken för kundens ALFKI.
Stäng meddelanderutan genom att klicka på OK .
I rutan Ange OrderID skriver du
123
och klickar sedan på Orderinformation.En meddelanderuta visar "Inga resultat".
Stäng meddelanderutan genom att klicka på OK .
På felsökningsmenyn klickar du på Sluta felsöka.
Felsökningssessionen stängs.
Om du har experimenterat klart kan du klicka på Stäng projekt på Arkiv-menyn och spara projektet när du uppmanas att göra det.
Nästa steg
Du kan förbättra det här projektet genom att göra några ändringar. Du kan till exempel lista tillgängliga lagrade procedurer i en listruta och låta användaren välja vilka procedurer som ska köras. Du kan också strömma utdata från rapporterna till en textfil.