ADO.NET Een DAL klasse maken voor een entiteit
Home

ADO.NET Een DAL klasse maken voor een entiteit

ADO.NET Een DAL klasse maken voor een entiteit

We volgen hier de filosofie van het Entity Framework en maken voor elke entiteit een aparte DAL klasse. Het is geen goed idee om een DAL klasse voor meerdere entiteiten te maken. Wel is het zo dat in een DAL voor een bepaalde entiteit eventueel andere entiteiten aangesproken kunnen worden als er foreign keys in de desbetreffende entiteit aanwezig zijn. Voor de entiteit Supplier bijvoorbeeld, zal de DAL de waarde van de Name kolom van het land van de leverancier opzoeken in de Country entiteit.

Probleem

De DAL klasse moet een verbinding kunnen maken met de database. Het Connection object heeft daarvoor een connectiestring nodig. De beste plaats om een connectiestring te bewaren is het Web.Config bestand voor Web applicaties of het App.Config bestand voor Windows applicaties. Om het gebruik van ADO.NET te leren maken we een Console Windows app en zetten we de connectiestring in het App.Config bestand.

Design

Oplossing

  1. Voorbereiding
    1. Voor de DDL voor Orderstatus uit met Mikmak MsSQL Data Definition Language.
    2. Creëer de stored procedures met Mikmak MsSQL DML OrderStatus.
  2. Maak een nieuw project in Visual Studio. Kies een Console applicatie:
    ADO.NET Dal klasse maken New Console Application Project
    ADO.NET Dal klasse maken New Console Application Project
  3. Voeg de connectiestring toe in het App.Config bestand:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
      </startup>
      <connectionStrings>
        <add name="WebwinkelWindowsAuthentication"
             connectionString="Data Source=.\SQLEXPRESS;       
             Integrated Security=SSPI;          
             Initial Catalog=Webwinkel;         
             MultipleActiveResultSets=true" 
             providerName="System.Data.SqlClient" />
      </connectionStrings>
    </configuration>
    
  4. Maak een map met de naam Models in de root van het project.
    ADO.NET Dal klasse maken Models map toevoegen
    ADO.NET Dal klasse maken Models map toevoegen
  5. In de Models map voeg je een klassenbestand toe met de naam OrderStatus.cs:
    ADO.NET Dal klasse maken OrderStatus klassenbestand toevoegen
    ADO.NET Model klasse maken OrderStatus klassenbestand toevoegen
  6. Maak het model voor de OrderStatus entiteit:
    /* Class: OrderStatus
     * modernways.be
     * created by an orm apart
     * Entreprise de modes et de manières modernes
     * Model for Webwinkel app
     * FileName: Models/OrderStatus.cs
     * Created on Wednesday 13th of January 2016 01:23:28 PM
    */ 
    // Code generated by An Orm Apart
    // do not modify the contents of this namespace
    using System;
    
    namespace Webwinkel.Models
    {
        public class OrderStatus
        {
            // fields
            protected String  name;
            protected String  description;
            protected Int32  id;
            // Getters and setters
            public String  Name
            {
                get { return this.name; }
                set { this.name = value; }
            }
    
            public String  Description
            {
                get { return this.description; }
                set { this.description = value; }
            }
    
            public Int32  Id
            {
                get { return this.id; }
                set { this.id = value; }
            }
    
        }
    }
    
  7. Maak in de root van het project een nieuwe map met de naam Dal:
    ADO.NET Dal klasse maken Dal map toevoegen
    ADO.NET Dal klasse maken Dal map toevoegen
  8. De DAL klasse haalt de connectie op uit het App.Config bestand. Daarvoor heb je de System.Configuration namespace nodig. In Console applicaties wordt niet die automatisch geladen en moet je zelf een referenctie toevoegen:
    ADO.NET Add reference to Configuration library
    ADO.NET Add reference to Configuration library
  9. In de Dal map voeg je een klassenbestand toe met de naam OrderStatus.cs. Je zou er de naam OrderStatusDal aan kunnen geven om een onderscheid te maken met de model klasse maar dat hoeft niet omdat het bestand in een andere submap staat dan het model met de zelfde naam.
    ADO.NET Dal klasse maken OrderStatus klassenbestand toevoegen
    ADO.NET Dal klasse maken OrderStatus klassenbestand toevoegen
  10. Typ de volgende code in het klassenbestand. De klasse zetten we in de namespace Webwinkel\Dal en implementeert de IDal interface. We voegen de Message Eigenschap toe om feedback aan de gebruiker te kunnen geven en een OrderStatus model eigenschap om een instantie van het model van de OrderStatus in de klasse te kunnen opslaan. Deze instantie van het model wordt buiten de klasse aangemaakt en in de constructor doorgegeven. Dat is een eenvoudige manier om Depency Injection te implementeren. De instantie van het model kan ook via een setter ingesteld worden of via een getter opgehaald worden.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Collections.Generic;
    namespace Webwinkel.Dal
    {
        class OrderStatus : Dal.IDal<Models.OrderStatus>
        {
            protected string message;
            public string Message
            {
                get { return this.message; }
            }
            protected Models.OrderStatus model;
            public Models.OrderStatus Model
            {
                get { return this.model; }
                set { this.model = value; }
            }
    
            public OrderStatus(Models.OrderStatus model)
            {
                this.model = model;
            }
        }
    }	 
    
  11. DAL ReadAll of SelectAll methode. Soms gebruiken we SelectAll als naam voor de methode. Als we de CRUD terminologie volgen gebruiken we de naam ReadAll.
  12. DAL Insert of Create methode. Soms gebruiken we Insert als naam voor de methode. Als we de CRUD terminologie volgen gebruiken we de naam Create.
  13. DAL SelectOne of ReadOne methode. Soms gebruiken we SelectOne als naam voor de methode. Als we de CRUD terminologie volgen gebruiken we de naam ReadOne.
  14. DAL Update methode.
  15. DAL Delete methode.
  16. De ADO.NET DAL klasse testen.

JI
2017-01-21 16:24:59