Delen via


Overzicht: Eenvoudig objectmodel en -query (C#)

Deze procedure biedt een fundamenteel end-to-end LINQ naar SQL-scenario 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 procedure is op code gebaseerd om LINQ aan SQL-concepten te laten zien. Normaal gesproken gebruikt u de Object Relational Designer om uw objectmodel te maken.

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

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

  • Voor dit scenario 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.

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 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 de volgende instructies toe boven aan Program.cs:

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

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

  • U wijst en _City velden voor privéopslag aan_CustomerID. 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 in de accolades voor de Customer klasse.

    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 maken ion opgeven voor de Northwind-database

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.

U declareert ook een Table<Customer> om te fungeren als de logische, getypte tabel voor uw query's op basis van 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 de sectie Vereisten eerder in dit scenario 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 wordt niet uitgevoerd. 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.

    Notitie

    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

Het overzicht: Het uitvoeren van query's op relaties (C#) gaat verder waar dit scenario eindigt. In het overzicht van query's over relaties ziet u hoe LINQ naar SQL query's kan uitvoeren in tabellen, vergelijkbaar met joins in een relationele database.

Als u de procedure voor query's tussen relaties wilt uitvoeren, moet u ervoor zorgen dat u de oplossing opslaat voor het scenario dat u zojuist hebt voltooid. Dit is een vereiste.

Zie ook