Delen via


Overzicht: Eenvoudig objectmodel en -query (C#)

Deze handleiding biedt een fundamenteel end-to-end LINQ naar SQL-voorbeeld met minimale complexiteit. U maakt een entiteitsklasse die de tabel Klanten modelleert in de voorbeelddatabase Northwind. Vervolgens maakt u een eenvoudige query om klanten weer te geven die zich in Londen bevinden.

Deze handleiding is gericht op code om LINQ to SQL-concepten te laten zien. Normaal gesproken gebruikt u de Object Relational Designer om uw objectmodel te maken.

Opmerking

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 IDEvoor meer informatie.

Deze walkthrough is geschreven met behulp van Visual C# ontwikkelinstellingen.

Vereiste voorwaarden

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

  • Voor deze handleiding is de Northwind-voorbeelddatabase vereist. 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 bestand naar de map c:\linqtest5.

Overzicht

Deze procedure bestaat uit zes hoofdtaken:

  • Een LINQ maken naar een SQL-oplossing in Visual Studio.

  • Een klasse toewijzen aan een databasetabel.

  • Eigenschappen in de klasse aanwijzen om databasekolommen weer te geven.

  • De verbinding met de Northwind-database opgeven.

  • Een eenvoudige query maken om uit te voeren op de database.

  • De query uitvoeren en de resultaten observeren.

Het maken van een LINQ-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.

Om een LINQ naar SQL-oplossing te maken

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

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

  3. Klik in het deelvenster Sjablonen op Consoletoepassing.

  4. Typ LinqConsoleApp in het vak Naam.

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

  6. Klik op OK.

LINQ-verwijzingen en -instructies toevoegen

In dit scenario worden assembly's gebruikt die mogelijk niet standaard in uw project worden geïnstalleerd. Als System.Data.Linq niet wordt vermeld als verwijzing in uw project (vouw het knooppunt Verwijzingen in Solution Explorer uit), voegt u dit toe, zoals wordt uitgelegd in de volgende stappen.

System.Data.Linq 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.

  3. Voeg bovenaan Program.cs de volgende instructies toe:

    using System.Data.Linq;
    using System.Data.Linq.Mapping;
    

Een klasse toewijzen aan een databasetabel

In deze stap maakt u een klasse en wijst u deze toe aan een databasetabel. Een dergelijke klasse wordt een entiteitsklasse aangeduid. Houd er rekening mee dat de toewijzing wordt uitgevoerd door alleen het TableAttribute kenmerk toe te voegen. De Name eigenschap geeft de naam van de tabel in de database op.

Een entiteitsklasse maken en koppelen aan een databasetabel

  • Typ of plak de volgende code in Program.cs direct boven de Program klassedeclaratie:

    [Table(Name = "Customers")]
    public class Customer
    {
    }
    

Eigenschappen voor de klasse toewijzen om databasekolommen weer te geven

In deze stap voert u verschillende taken uit.

  • U gebruikt het ColumnAttribute kenmerk voor het aanwijzen CustomerID en City eigenschappen van de entiteitsklasse als het weergeven van kolommen in de databasetabel.

  • Je wijst de CustomerID eigenschap aan als een primaire sleutelkolom in de database.

  • U wijst de velden _CustomerID en _City aan voor privéopslag. LINQ naar SQL kan vervolgens waarden rechtstreeks opslaan en ophalen, in plaats van openbare accessors te gebruiken die bedrijfslogica kunnen bevatten.

Kenmerken van twee databasekolommen weergeven

  • Typ of plak de volgende code in Program.cs tussen de accolades van de Customer class.

    private string _CustomerID;
    [Column(IsPrimaryKey=true, Storage="_CustomerID")]
    public string CustomerID
    {
        get
        {
            return this._CustomerID;
        }
        set
        {
            this._CustomerID = value;
        }
    }
    
    private string _City;
    [Column(Storage="_City")]
    public string City
    {
        get
        {
            return this._City;
        }
        set
        {
            this._City=value;
        }
    }
    

De verbinding met de Northwind-database opgeven

In deze stap gebruikt u een DataContext object om een verbinding tot stand te brengen tussen uw op code gebaseerde gegevensstructuren en de database zelf. Het DataContext is het hoofdkanaal waarmee u objecten ophaalt uit de database en wijzigingen verzendt.

Je declareert ook een Table<Customer> om te dienen als de logische, gespecificeerde tabel voor je query's op de tabel Klanten in de database. U maakt en voert deze query's uit in latere stappen.

De databaseverbinding opgeven

  • Typ of plak de volgende code in de Main methode.

    Houd er rekening mee dat het northwnd.mdf bestand zich in de map linqtest5 bevindt. Zie het gedeelte Vereisten eerder in deze walkthrough voor meer informatie.

    // Use a connection string.
    DataContext db = new DataContext
        (@"c:\linqtest5\northwnd.mdf");
    
    // Get a typed table to run queries.
    Table<Customer> Customers = db.GetTable<Customer>();
    

Een eenvoudige query maken

In deze stap maakt u een query om te vinden welke klanten in de tabel Klanten zich in Londen bevinden. De querycode in deze stap beschrijft alleen de query. Het voert het niet uit. Deze benadering wordt de uitgestelde uitvoering genoemd. Zie Inleiding tot LINQ-query's (C#) voor meer informatie.

U produceert ook een logboekuitvoer om de SQL-opdrachten weer te geven die LINQ naar SQL genereert. Deze functie voor logboekregistratie (die gebruikmaakt) Logis handig bij het opsporen van fouten en bij het bepalen of de opdrachten die naar de database worden verzonden, uw query nauwkeurig vertegenwoordigen.

Een eenvoudige query maken

  • Typ of plak de volgende code in de Main methode na de Table<Customer> declaratie.

    // Attach the log to show generated SQL.
    db.Log = Console.Out;
    
    // Query for customers in London.
    IQueryable<Customer> custQuery =
        from cust in Customers
        where cust.City == "London"
        select cust;
    

De query uitvoeren

In deze stap voert u de query daadwerkelijk uit. De query-expressies die u in de vorige stappen hebt gemaakt, worden pas geëvalueerd als de resultaten nodig zijn. Wanneer u de foreach iteratie start, wordt een SQL-opdracht uitgevoerd voor de database en worden objecten gerealiseerd.

De query uitvoeren

  1. Typ of plak de volgende code aan het einde van de Main methode (na de querybeschrijving).

    foreach (Customer cust in custQuery)
    {
        Console.WriteLine("ID={0}, City={1}", cust.CustomerID,
            cust.City);
    }
    
    // Prevent console window from closing.
    Console.ReadLine();
    
  2. Druk op F5 om fouten in de toepassing op te sporen.

    Opmerking

    Als uw toepassing een runtimefout genereert, raadpleegt u de sectie Probleemoplossing van Learning by Walkthroughs.

    De queryresultaten in het consolevenster moeten er als volgt uitzien:

    ID=AROUT, City=London

    ID=BSBEV, City=London

    ID=CONSH, City=London

    ID=EASTC, City=London

    ID=NORTS, City=London

    ID=SEVES, City=London

  3. Druk op Enter in het consolevenster om de toepassing te sluiten.

Volgende stappen

De instructie: Het uitvoeren van query's op relaties (C#) sluit aan op het einde van deze handleiding. In de stapsgewijze handleiding voor het opvragen over relationele relaties ziet u hoe LINQ to SQL query's kan uitvoeren over tabellen heen, vergelijkbaar met joins in een relationele database.

Als u de stapsgewijze instructie voor query's over relaties wilt uitvoeren, moet u ervoor zorgen dat u de oplossing opslaat voor het scenario dat u zojuist hebt voltooid, aangezien dit een vereiste is.

Zie ook