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
- Voorbereiding
- Voor de DDL voor Orderstatus uit met Mikmak MsSQL Data Definition Language.
- Creëer de stored procedures met Mikmak MsSQL DML OrderStatus.
- Maak een nieuw project in Visual Studio. Kies een Console applicatie:
ADO.NET Dal klasse maken New Console Application Project - 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>
- Maak een map met de naam Models in de root van het project.
ADO.NET Dal klasse maken Models map toevoegen - In de Models map voeg je een klassenbestand toe met de naam OrderStatus.cs:
ADO.NET Model klasse maken OrderStatus klassenbestand toevoegen - 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; } } } }
- Maak in de root van het project een nieuwe map met de naam Dal:
ADO.NET Dal klasse maken Dal map toevoegen - 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 - 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 - Typ de volgende code in het klassenbestand. De klasse zetten we in de namespace
Webwinkel\Dal
en implementeert deIDal
interface. We voegen deMessage
Eigenschap toe om feedback aan de gebruiker te kunnen geven en eenOrderStatus
model eigenschap om een instantie van het model van deOrderStatus
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; } } }
- DAL ReadAll of SelectAll methode. Soms gebruiken we
SelectAll
als naam voor de methode. Als we de CRUD terminologie volgen gebruiken we de naamReadAll.
- DAL Insert of Create methode. Soms gebruiken we
Insert
als naam voor de methode. Als we de CRUD terminologie volgen gebruiken we de naamCreate
. - DAL SelectOne of ReadOne methode. Soms gebruiken we
SelectOne
als naam voor de methode. Als we de CRUD terminologie volgen gebruiken we de naamReadOne
. - DAL Update methode.
- DAL Delete methode.
- De ADO.NET DAL klasse testen.
2017-01-21 16:24:59