Dela via


Genomgång: Enkel objektmodell och fråga (Visual Basic)

Den här genomgången ger ett grundläggande LINQ till SQL-scenario från slutpunkt till slutpunkt med minimal komplexitet. Du skapar en entitetsklass som modellerar tabellen Kunder i northwind-exempeldatabasen. Sedan skapar du en enkel fråga för att lista kunder som finns i London.

Den här genomgången är kodorienterad av design för att visa LINQ till SQL-begrepp. Normalt sett använder du objektrelationsdesignern för att skapa objektmodellen.

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 använder en dedikerad mapp ("c:\linqtest") för att lagra filer. Skapa den här mappen innan du påbörjar genomgången.

  • Den här genomgången kräver 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 filen till mappen c:\linqtest.

Översikt

Den här genomgången består av sex huvuduppgifter:

  • Skapa en LINQ till SQL-lösning i Visual Studio.

  • Mappa en klass till en databastabell.

  • Ange egenskaper för klassen som ska representera databaskolumner.

  • Ange anslutningen till Northwind-databasen.

  • Skapa en enkel fråga som ska köras mot databasen.

  • Köra frågan och observera resultaten.

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

  1. På Arkiv-menyn klickar du på Nytt projekt.

  2. I fönstret Projekttyper i dialogrutan Nytt projekt klickar du på Visual Basic.

  3. I fönstret Mallar klickar du på Konsolprogram.

  4. I rutan Namn skriver du LinqConsoleApp.

  5. Klicka på OK.

Lägga till LINQ-referenser och -direktiv

Den här genomgången använder sammansättningar som kanske inte installeras som standard i projektet. Om System.Data.Linq inte visas som en referens i projektet (klicka på Visa alla filer i Solution Explorer och expandera noden Referenser ) lägger du till den, enligt beskrivningen i följande steg.

Så här lägger du till System.Data.Linq

  1. Högerklicka på Referenser i Solution Explorer och klicka sedan på Lägg till referens.

  2. 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.

  3. I dialogrutan Lägg till referens klickar du också på .NET, bläddrar till och klickar på System.Windows.Forms och klickar sedan på OK.

    Den här sammansättningen, som stöder meddelanderutan i genomgången, läggs till i projektet.

  4. Lägg till följande direktiv ovan Module1:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    Imports System.Windows.Forms
    
    

Mappa en klass till en databastabell

I det här steget skapar du en klass och mappar den till en databastabell. En sådan klass kallas en entitetsklass. Observera att mappningen utförs genom att bara lägga till TableAttribute attributet. Egenskapen Name anger namnet på tabellen i databasen.

Skapa en entitetsklass och mappa den till en databastabell

  • Skriv eller klistra in följande kod i Module1.vb omedelbart ovanför Sub Main:

    <Table(Name:="Customers")> _
    Public Class Customer
    End Class
    

Ange egenskaper för klassen för att representera databaskolumner

I det här steget utför du flera uppgifter.

  • Du använder ColumnAttribute attributet för att ange CustomerID och City egenskaper för entitetsklassen som representerar kolumner i databastabellen.

  • Du anger egenskapen CustomerID som representerar en primärnyckelkolumn i databasen.

  • Du anger _CustomerID och _City fält för privat lagring. LINQ till SQL kan sedan lagra och hämta värden direkt, i stället för att använda offentliga accessorer som kan innehålla affärslogik.

Så här representerar du egenskaper för två databaskolumner

  • Skriv eller klistra in följande kod i Module1.vb strax före End Class:

    Private _CustomerID As String
    <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _
    Public Property CustomerID() As String
        Get
            Return Me._CustomerID
        End Get
        Set(ByVal value As String)
            Me._CustomerID = value
        End Set
    End Property
    
    Private _City As String
    <Column(Storage:="_City")> _
    Public Property City() As String
        Get
            Return Me._City
        End Get
        Set(ByVal value As String)
            Me._City = value
        End Set
    End Property
    

Ange Anslut ion till Northwind-databasen

I det här steget använder du ett DataContext objekt för att upprätta en anslutning mellan dina kodbaserade datastrukturer och själva databasen. DataContext är den huvudkanal genom vilken du hämtar objekt från databasen och skickar ändringar.

Du deklarerar också en Table(Of Customer) för att fungera som den logiska, typerade tabellen för dina frågor mot tabellen Kunder i databasen. Du skapar och kör dessa frågor i senare steg.

Så här anger du databasanslutningen

  • Skriv eller klistra in följande kod i Sub Main metoden.

    Observera att northwnd.mdf filen antas finnas i mappen linqtest. Mer information finns i avsnittet Förutsättningar tidigare i den här genomgången.

    ' Use a connection string.
    Dim db As New DataContext _
        ("c:\linqtest\northwnd.mdf")
    
    ' Get a typed table to run queries.
    Dim Customers As Table(Of Customer) = _
        db.GetTable(Of Customer)()
    

Skapa en enkel fråga

I det här steget skapar du en fråga för att hitta vilka kunder i tabellen Kunder i databasen som finns i London. Frågekoden i det här steget beskriver bara frågan. Den kör den inte. Den här metoden kallas för uppskjuten körning. Mer information finns i Introduktion till LINQ-frågor (C#).

Du kommer också att skapa en loggutdata för att visa DE SQL-kommandon som LINQ till SQL genererar. Den här loggningsfunktionen (som använder Log) är användbar vid felsökning och för att fastställa att kommandona som skickas till databasen korrekt representerar din fråga.

Skapa en enkel fråga

  • Skriv eller klistra in följande kod i Sub Main metoden efter deklarationen Table(Of Customer) :

    ' Attach the log to show generated SQL in a console window.
    db.Log = Console.Out
    
    ' Query for customers in London.
    Dim custQuery = _
        From cust In Customers _
        Where cust.City = "London" _
        Select cust
    

Köra frågan

I det här steget kör du faktiskt frågan. De frågeuttryck som du skapade i föregående steg utvärderas inte förrän resultaten behövs. När du påbörjar iterationen For Each körs ett SQL-kommando mot databasen och objekt materialiseras.

Så här kör du frågan

  1. Skriv eller klistra in följande kod i slutet av Sub Main metoden (efter frågebeskrivningen):

    ' Format the message box.
    Dim msg As String = "", title As String = "London customers:", _
        response As MsgBoxResult, style As MsgBoxStyle = _
        MsgBoxStyle.Information
    
    ' Execute the query.
    For Each custObj In custQuery
        msg &= String.Format(custObj.CustomerID & vbCrLf)
    Next
    
    ' Display the results.
    response = MsgBox(msg, style, title)
    
  2. Tryck på F5 för att felsöka programmet.

    Kommentar

    Om ditt program genererar ett körningsfel kan du läsa avsnittet Felsökning i Learning by Walkthroughs (Felsökning efter genomgång).

    Meddelanderutan visar en lista med sex kunder. Konsolfönstret visar den genererade SQL-koden.

  3. Klicka på OK för att stänga meddelanderutan.

    Programmet stängs.

  4. På menyn File (Arkiv) klickar du på Save All (Spara alla).

    Du behöver det här programmet om du fortsätter med nästa genomgång.

Nästa steg

Avsnittet Genomgång: Fråga över relationer (Visual Basic) fortsätter där den här genomgången slutar. Genomgången Fråga över relationer visar hur LINQ till SQL kan köra frågor mellan tabeller, ungefär som kopplingar i en relationsdatabas.

Om du vill göra genomgången Fråga över relationer ska du spara lösningen för den genomgång som du just har slutfört, vilket är en förutsättning.

Se även