Entity Framework en Entity SQL
|
|
|
- Floris Boender
- 10 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Thema Entity Framework en Entity SQL DATABASETOEGANG EN OBJECT RELATIONAL MAPPING MET HET ENTITY-MODEL. Hoe bouw je een persistence-laag met ADO.NET 3.5? De auteur maakt in zijn voorbeeld gebruik van het Entity Framework. Daarbij ligt de mapping tussen de objectgeoriënteerde classes en het relationele databaseschema vast in het Entity Data Model. Als nieuwe query-taal wordt Entity SQL toegepast. Doelstelling van de implementatie van het Entity Framework is om voor de ontwikkelaar abstractie te maken van de relationele structuur van de database en die uitsluitend te laten werken met objecten. Voor het bouwen van toepassingen is hierbij geen kennis meer nodig van de onderliggende opbouw van de relaties tussen de tabellen en eventuele stored-procedures. We kunnen werken met classes die aan elkaar gerelateerd zijn via de gekende objectgeoriënteerde technieken als inheritance and associations. Het framework doet at-runtime de vertaalslag naar de queries van hetgeen via deze classes gevraagd is en genereert ook updates, inserts en deletes voor de betreffende tabellen in de database. Om dit te doen moet de mapping tussen de classes en tables beschreven zijn en moet at-runtime dan ook de nodige metadata beschikbaar staan. De metadata is declaratief beschreven in een drietal XML-bestanden. De applicatie zal deze bestanden terugvinden via een in de connectionstring aanwezig path dat naar de eigenlijke database wijst. Zie codevoorbeeld 1. Het Entity Model Het belangrijkste concept in het Entity Framework is uiteraard het Entity Model. In een Entity Model wordt alle benodigde informatie voor de mapping tussen objecten en tables vastgelegd. Dit conceptuele model kunnen we vanuit Visual Studio visueel ontwerpen. Dit kan op twee manieren. Ofwel door het importeren van de databasestructuur, waarbij een deel van de mapping reeds aangemaakt zal worden (waarna je het model verder kan uitwerken naar een goed OO-model). Ofwel door eerst de objecten vast te leggen en ze daarna te mappen naar elementen in de database. Deze elementen kunnen bestaan uit tables, views of stored procedures. In Visual Studio krijgt zo n model de extensie.edmx. In een.edmx file onderscheiden we drie verschillende lagen. Allereerst het storemodel, een beschrijving hoe de relationele structuur van de database er uitziet. Hierin komen zaken als veldtypes, primary keys en foreign keys. Daarboven ligt de conceptuele beschrijving van de objecten en hun relaties in objectgeoriënteerde termen. Hier definiëren we zaken als overerving en associaties. Tussen deze twee lagen is de mapping-laag aanwezig. Deze bevat uiteindelijk de informatie die beschrijft hoe de twee werelden naar elkaar toe gemappet worden. Bij het compileren wordt het.edmxbestand uitgesplitst in.csdl-,.msl-,.ssdl-bestanden, voor respectievelijk de conceptuele, mapping en storage metadata. De applicatie heeft deze drie bestanden nodig om de mapping correct uit te voeren. ObjectContext De meeste benodigde classes om met het Entity Framework te werken bevinden zich in de System.Data.Objects namespace uit de System.Data. Entity dll. Hierin is ObjectContext meteen de belangrijkste class en zorgt onder andere voor het openen van een connectie naar de eigenlijke database. Bij de instantiatie van deze context kan een connectionstring (zie codevoorbeeld 1) meegegeven worden, waarin ook het path naar de mapping files is vastgelegd. Als deze connectiestring niet is meegegeven zal uiteraard in de.config file gezocht worden. De objectcontext heeft als belangrijkste taak het opvolgen van de wijzigingen in de objecten waarvan de code door het Entity Model is aangemaakt. Deze wijzigingen kunnen toevoegingen zijn, aanpassingen of het verwijderen van objecten. Na het uitvoeren van de SaveChange() method van de ObjectContext worden de nodige SQL statements aangemaakt en naar de database verzonden. De ObjectContext zelf heeft typisch een korte levensduur om zoveel mogelijk concurrency-problemen te vermijden. AFBEELDING 1. DE ONDERDELEN VAN HET ENTITY MODEL (CONCEPTUAL, MAPPING EN STORAGE) connectionstring= metadata=northwindefmodel. csdl NorthwindEFModel.ssdl NorthwindEFModel. msl;provider=system.data.sqlclient;provider connection string="data Source=.\SQLEXPRESS;AttachDbFilename=C:\DB\NorthwindEF. mdf;integrated Security=True;User Instance=True;MultipleActiv eresultsets=true" providername= System.Data.EntityClient CODEVOORBEELD 1. EEN VOOR DE OBJECTCONTEXT BENODIGDE CONNECTIONSTRING.NET magazine nummer
2 Adv
3 NorthwindEFModel.NorthwindEntities NWCtx; NWCtx = new NorthwindEFModel.NorthwindEntities(); //Selecting records with a LINQ query var q = from p in NWCtx.Employees select p; //Create an address NorthwindEFModel.CommonAddress address; address = new NorthwindEFModel.CommonAddress(); address.address = XXXX ; address.city = XXX ; address.country = BE ; address.postalcode = XXXX ; address.region = XXXX ; //Create an employee with this address NorthwindEFModel.Employee employee; employee = NorthwindEFModel.CurrentEmployee.CreateCurrentEmployee(1001, Solo, Han, address); employee.title = Captain of Millennium Falcon ; //Add it to the collections NWCtx.AddToEmployees(employee); //Save the changes NWCtx.SaveChanges(); CODEVOORBEELD 2. HET GEBRUIK VAN DE OBJECTCONTEXT, AANMAAK VAN OBJECTEN EN HET BEWAREN VAN DE WIJZIGINGEN Entity SQL Het framework gebruikt de taal Entity SQL om op een dynamische manier de opbouw van de queries ten opzichte van het Entity Model toe te laten en de mapping engine aan te sturen om er pure relationele commando s uit te genereren. De taal lijkt zeer sterk op transact SQL maar heeft toch een wat andere syntax. De in deze taal uitgedrukte queries bevinden zich als strings in de code en zijn dus, doordat deze geïnterpreteerd worden, voor de compiler niet zichtbaar. Hierdoor zijn syntaxfouten at runtime slecht te detecteren en dit kan leiden tot exceptions. De meerwaarde van deze taal zit hem in de support voor de objectgeorienteerde aspecten, vastgelegd in het Entity Model. In Entity SQL kan bijvoorbeeld de conditie van een where clause bestaan uit een navigatie door de associaties van de classes heen. Ook bestaat de mogelijkheid om aan te geven welk type van objecten we als antwoord willen. Bovendien kunnen we voor de beschrijving van de resultaten namen van velden in classes mengen met namen van subclasses. Om zo een antwoord te krijgen dat bestaat uit twee recordsets in een parent-child-relatie, zonder expliciet de relatie ertussen in de query te beschrijven. Het Entity Model kent immers deze relatie. Zie codevoorbeeld 3. Entity SQL beperkt ook een deel van de te vrije functionaliteit in T-SQL. Zo is het bijvoorbeeld niet toegelaten gebruik te maken van de * wildcard (zoals in SELECT * FROM) om alle velden op te halen zonder deze allemaal expliciet te benoemen. Er moet vastliggen welke velden precies in de recordset als antwoord aanwezig dienen te zijn. Het Entity-model heeft immers alleen kennis van de velden die er in gedefinieerd zijn en kan dus niet overweg met een door de database bepaalde lijst van die velden. SELECT c.categoryname, c.products FROM NorthwindEntities.Categories as c SELECT p.productname FROM OFTYPE(NorthwindEntities. Products,NorthwindEFModel.DiscontinuedProduct) AS p ORDER BY p.productname SELECT VALUE o FROM Orders AS o WHERE o.customer.address.country = Mexico CODEVOORBEELD 3. ENKELE VOORBEELDEN VAN ENTITY SQL STATEMENTS Query s uitvoeren Door het Entity Framework zal de ontwikkelaar niet meer de SQL select statements als voorheen opbouwen, maar tegen een tussenlaag gaan spreken. Deze tussenlaag verwacht dus een query die eerder objectgeorienteerd is dan relationeel. Er zijn drie manieren om gegevens via Entity Framework uit een database te gaan halen. - De EntityClient Provider en Entity SQL Hierin kent men het programmeermodel zoals in ADO.NET 2.0. Er is een Connection, een Command en een DataReader, meer specifiek een EntityConnection, een EntityCommand en een EntityDataReader. De manier van werken is identiek zoals voorheen. Het EntityCommand heeft een verwijzing nodig naar een EntityConnection en een CommandText die een query-opdracht (in Enity SQL uitgedrukt) bevat. Het Entity command is ook parametriseerbaar en zal een EntityDataReader als antwoord geven op de ExectureReader() method. Hierbij speelt de ObjectContext niet mee, de connectie is geopend via de EntityConnection en er zijn geen wijzigingen uitvoerbaar. De EntityDataReader is zoals zijn voorganger read-only. Zie codevoorbeeld 4 waarin een Enity SQL query wordt uitgevoerd die eigenlijk verscheidene tables aanspreekt en een geneste DataReader teruggeeft. Voor elk record uit een parent table kunnen dus verschillende records uit een child table aangesproken worden. Van belang is te weten dat ADO hierbij verwacht dat de database multiple active resultsets (MARS) ondersteunt. Dit moet je dus ook bij de connectionstring aangeven. Bij deze techniek zijn de resultaten niet op voorhand getypeerd, de velden kunnen via de datareader alleen met hun naam of volgnummer aangesproken worden, zoals ook bij de klassieke DataReader. - ObjectServices en Entity SQL Met Objectservices werken we ook met Entity SQL die dynamisch als string opgebouwd kan worden. Het uitvoeren ervan resulteert echter in een getypeerde collection van objects met de data. Deze objecten zijn instanties van door het Entity Model aangemaakte classes. Het resultaat is dus sterk getypeerd en men kan de inhoud van de velden direct aanspreken via members van de classes. Ook zal de ObjectContext nu in staat zijn de wijzigingen te detecteren en updates te genereren. Zie string connectionstring; connectionstring Name=NorthwindEntities ; EntityConnection connection; connection = new EntityConnection(connectionString); connection.open(); EntityCommand command; command = new EntityCommand(); command.connection = connection; command.commandtext = SELECT c.categoryname, c.products FROM NorthwindEntities.Categories as c ; EntityDataReader datareader; datareader = command.executereader(commandbehavior.sequentialaccess); while (datareader.read()) // System.Data.Common.DbDataReader nestedreader; nestedreader = datareader.getdatareader(1); while (nestedreader.read()) // CODEVOORBEELD 4. EEN ENTITYCOMMAND MET EEN GENESTE DATAREADER ALS RESULTAAT.NET magazine nummer
4 Wilt u het.net magazine blijven ontvangen? Verleng uw abonnement op NorthwindEFModel.NorthwindEntities NWCtx; NWCtx = new NorthwindEFModel.NorthwindEntities(); string entitysql = SELECT VALUE o FROM Orders AS o WHERE o.customer.address.country = Mexico ; ; ObjectQuery<NorthwindEFModel.Order> q = NWCtx. CreateQuery<NorthwindEFModel.Order>(entitySQL). Include( Customer ); foreach (NorthwindEFModel.Order item in q) // CODEVOORBEELD 5. EEN QUERY DOOR MIDDEL VAN OBJECTSERVICES codevoorbeeld 5 waarin we via de context de opdracht geven een Entity SQL command uit te voeren en hierbij aangeven welke classes voor de resultaten gebruikt moeten worden. - LINQ to Entities De derde mogelijkheid is het gebruik van een LINQ query. Met LINQ legt men een query vast als een commando dat de compiler ziet en dus controle mogelijk is op typeringsfouten. De elementen die in de query als resultaat kunnen voorkomen en de mogelijke velden waarop de filter in de where clause zich kan baseren, zijn reeds aanwezig als classes en members van classes. De ondersteuning door middel van intellisense betekent hier een zeer belangrijke meerwaarde. O/R mapping. Object/Relational mapping zorgt dus voor de beschrijving door middel van metadata hoe classes naar tables gekoppeld zijn. Belangrijk te weten (Advertentie) AFBEELDING 2. HET IMPORTEREN VAN TABLES IN HET ENTITY MODEL is dat je ook views en stored procedures in deze mapping kan toepassen. De kracht van O/R mapping wordt snel duidelijk als we in de database gebruikmaken van een meer-op-meer relatie. Een meer-op-meer relatie tussen twee tables bouw je effectief op door een derde table die de primary keys van de twee tables bevat. Deze tussentabel is eigenlijk niet relevant voor onze classes en O/R mapping zorgt hier dus voor de nodige abstractie. In het Entity Model zullen slechts twee entities bestaan met elk een collectie van referenties naar elkaar. Al bij het importeren van het databaseschema in het Entity Model worden de klassieke meer-op-meer relaties via de tussen-table herkend en automatisch omgevormd naar de OO-manier met collecties. Zie hiervoor de screenshots in afbeeldingen 2 en 3. Daarin worden drie tables uit de Northwind database geïmporteerd en komen er uiteindelijk twee entiteiten in het model terecht. Let op de *..*-relatie tussen de twee entiteiten die er automatisch bijkwam. Maar O/R mapping kan natuurlijk verder gaan dan dit gedrag alleen. Er is een aantal typische mapping patterns tussen classes en tables die het Enity Framework ondersteunen. Deze patronen staan beschreven in het boek Patterns of Enterprise Application Architecture van Martin Fowler. Deze patterns kunnen vanuit de XML-notatie in de.edmx-bestanden (of de.cssd-,.msl- en.ssdl-bestanden) of vanuit de designer opgezet worden. In de bètaversies van het framework heeft de designer nog een te beperkte functionaliteit om dit puur visueel te doen, dus moet er vanuit de XML gewerkt worden. Microsoft.Net Magazine Just refreshed.net even lekkerder AFBEELDING 3. ENTITEITEN MET EEN M-N RELATIE microsoft.nl/netjesgeregeld AFBEELDING 4. TABLE PER CONCRETE TYPE: EMPLOYEES PREVIOUSEMPLOYEES 26.NET magazine nummer
5 <!-- CSDL --> <EntityType Name= CurrentEmployee BaseType= NorthwindEFModel. Employee > <EntityType Name= PreviousEmployee BaseType= NorthwindEFModel. Employee > <!-- MSL --> <EntitySetMapping Name= Employees > <EntityTypeMapping TypeName = NorthwindEFModel.CurrentEmployee > <MappingFragment StoreEntitySet = Employees > <EntityTypeMapping TypeName= NorthwindEFModel.PreviousEmployee > <MappingFragment StoreEntitySet = PreviousEmployees > <EntitySetMapping> CODEVOORBEELD 6. TWEE ENTITIES ERVEN OVER VAN EEN GEMEENSCHAPPELIJK BASETYPE AFBEELDING 6. TABLE PER HIERACHY: PRODUCTS DISCONTINUED PRODUCTS <!-- CSDL --> <EntityType Name= Product > <EntityType Name= DiscontinuedProduct BaseType= NorthwindEFModel.Product > <!-- MSL --> AFBEELDING 5. TABLE PER TYPE: ORDERS INTERNATIONAL ORDERS <EntitySetMapping Name= Products > <EntityTypeMapping TypeName= NorthwindEFModel.Product > <MappingFragment StoreEntitySet= Products > <Condition ColumnName= Discontinued Value= false /> <EntityTypeMapping TypeName= NorthwindEFModel.Discontinued- Product > <MappingFragment StoreEntitySet= Products > <Condition ColumnName= Discontinued Value= true /> </EntitySetMapping> CODEVOORBEELD 8. TABLE PER HIERACHY, WAARBIJ DE CONDITIE VOOR DE DISCRIMI- <!-- CSDL --> <EntityType Name= InternationalOrder BaseType = NorthwindEF- Model.Order > <!-- MSL --> <EntitySetMapping Name= Orders > <EntityTypeMapping TypeName= IsTypeOf(NorthwindEFModel.Order) > <MappingFragment StoreEntitySet= Orders > <EntityTypeMapping TypeName = NorthwindEFModel.InternationalOrder > <MappingFragment StoreEntitySet= InternationalOrders > <EntitySetMapping> CODEVOORBEELD 7. CODEFRAGMENT VOOR TABLE PER TYPE Concrete Table Inheritance Bij Concrete Table Inheritance (of Table Per Concrete Type) komt een table overeen met een concreet type. Daarbij worden gelijkaardige tables met gemeenschappelijke velden, dus elk naar een overerving van een abstracte class, met deze gemeenschappelijke velden gemappet. Typisch is hier een over de verschillende tables heen unieke primary key. Als voorbeeld nemen we een table met huidige werknemers en een tweede table met ex-werknemers. De reden om dit vanuit databasestandpunt in twee NATOR IS OPGEGEVEN tabellen uit te splitsen, is performantiewinst. Het gaat nu eenmaal sneller om alleen op de huidige werknemers te selecteren, terwijl je toch ook alle records van ex-werknemers wilt behouden. Class Table Inheritance Het pattern Class Table Inheritance (of Table Per Type) is vooral bruikbaar waar velden die logish gezien bij elkaar horen toch verspreid zijn over meer tables. Misschien zijn deze tables historisch zo gegroeid en werden ze eerder ook door verschillende applicaties gebruikt. Het voorbeeld bestaat uit een table met orders en een tweede table met extra velden voor internationale orders. Een internationale order heeft naast alle velden van de orders table enkele extra velden. In classes wordt dit patroon geïmplementeerd door overerving. Single Table Inheritance Bij het pattern Single Table Inheritance (of Table Per Hierarchy) is het mogelijk een table naar diverse classes te mappen omdat in de table eigenlijk twee types van records kunnen voorkomen. Het veld discriminator geeft aan over welk type het eigenlijk gaat. Dit resulteert in classes die van elkaar overerven, waarbij de onderliggende class de extra velden bevat. In het voorbeeld zien we de tabel Products met een boolean-veld (discontinued) om aan te geven dat een product eigenlijk niet meer beschikbaar is. Een exta veld (DiscontinuedDate) is uitsluitend voor dit type producten van belang. Uiteraard zijn dit slechts kleine fragmenten uit de mapping files ter verduidelijking van de patterns. Er is heel wat meer metadata aanwezig die.net magazine nummer
6 try ctx.savechanges(); catch (OptimisticConcurrencyException ex) List<object> failed = new List<object>(); foreach (ObjectStateEntry entry in ex.stateentries) failed.add(entry.entity); if (AskUserWhatToDo()) ctx.refresh(refreshmode.clientwins, failed); ctx.savechanges(); else ctxuser2.refresh(refreshmode.storewins, failed); ctxuser2.savechanges(); CODEVOORBEELD 9. HOE HET CONCURRENCY-PROBLEEM OPLOSSEN onder andere de velden van en de associaties tussen entities beschrijven. Hoe concurrency oplossen? Bij iedere multi-user databaseapplicatie kan de situatie voorkomen dat verscheidene gebruikers met dezelfde data werken en ieder ook wijzigingen aanbrengt. Het sturen van de updates naar de database kan bij de SaveChanges() method leiden tot concurrency-problematiek. Het is aan de ontwikkelaar om dit op te lossen. Entity Framework en de Object- Context gebruiken optimistic locking. Dit wil zeggen dat men er van uit gaat dat een concurrency-probleem zich meestal niet voordoet en dat er actie wordt ondernomen, mocht dit dan toch gebeuren. Als er zich een concurrency-probleem voordoet, ontstaat een OptimisticConcurrency- Exception. Na het opvangen van deze exception is van elk van de records die het probleem hebben veroorzaakt de originele waarde en de huidige te zien (codevoorbeeld 9). Op basis van deze waarden kan de applicatie eventueel beslissen hoe verder te gaan. Bedoeling is om de ObjectContext te verversen waarbij opgegeven kan worden wat het gedrag moet zijn bij de volgende SaveChanges(). Ofwel beslist men dat de database ongewijzigd blijft en dus de updates van de tweede user verloren zijn (Store- Wins), ofwel kan het overschrijven van de database geforceerd worden. Hierdoor past de tweede gebruiker de door de eerste gebruiker aangepast data opnieuw aan. Links: Kurt Claeys is een.net Architect voor Ordina België met focus op WCF/WF en O/R Mapping in ADO.NET 3.5, MCT en actief in de Belgische.NET community. Je kunt hem bereiken via kurt.claeys@ordina en via zijn persoonlijke blog: (Advertentie) 28.NET magazine nummer
Sparse columns in SQL server 2008
Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : [email protected] www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG
NHibernate als ORM oplossing
NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een
Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.
Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus
Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:
Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig
SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.
SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens
Databases - Inleiding
Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden
In deze query is 'alfki' een constante. Met deze query wordt telkens hetzelfde record uit de tabel Customers opgeroepen.
Hoofdstuk 3 Query's met parameters Een parameter in een query is eigenlijk niets anders dan een soort variabele in een query die nog een waarde moet krijgen. De volgende query heeft bijvoorbeeld geen parameter:
Synchronisatie van data
Thema Synchronisatie van data IN COMBINATIE MET SQL SERVER 2008 GOEDE STEUN VOOR ONTWIKKELAAR Om synchroniseren aanmerkelijk eenvoudiger te maken, heeft Microsoft de ADO.NET Sync Services uitgebracht.
Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64
Klas Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters JONGENS Number Integer MEISJES Number Integer Lessen Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters DOCCODE Short Text 3 Characters
Technisch Ontwerp W e b s i t e W O S I
Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept
ADO.Net. Examen 70-516
Developing Data Access Solutions with Microsoft Visual Studio 2010 Examen 70-516 ADO.Net Zonder Object Relational Mapping (ORM) en interessant tot en met.net framework 2.0. ADO.Net ondersteund SQL Server,
In een klassendiagram worden klassen beschreven in termen
Sander Hoogendoorn is Partner bij Ordina Patterns voor het gebruik van referenties in bedrijfsklassen G O E D G E B R U I K VA N R E F E R E N T I E S In de dagen dat applicaties voornamelijk bestonden
Mijn eerste ADO.NET applicatie
Hoofdstuk 2 Mijn eerste ADO.NET applicatie ADO staat voor ActiveX Database Objects. Dit is een verzameling klassen die onderdeel uitmaken van het.net framework, waarmee je verbinding kunt maken met een
Fun met webparts in ASP.Net
Fun met webparts in ASP.Net Deel 2:User controls en Webparts door Bert Dingemans, e-mail : [email protected] www : http:// 1 Inhoudsopgave FUN MET WEBPARTS IN ASP.NET... 1 DEEL 2:USER CONTROLS EN WEBPARTS...
Capita Selecta Design Patterns voor administratieve applicaties
Capita Selecta voor administratieve applicaties Bij afstudeerproject: Generiek framework voor administratieve toepassingen in een webgeörienteerde omgeving Henk van de Ridder 26 augustus 2006 Inhoud 26
SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.
BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is
Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site
Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.
INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...
Inhoudsopgave INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... 3 1 DE DATABASE CURSUSSEN... 9 1.1 Inleiding... 9 1.2 Het voorbeeld... 9 1.2.1 Probleemomschrijving... 9 1.2.2 Concretisering en vragen naar
INHOUDSOPGAVE 3. 3.5 Het Boekenwinkeltje... 90 3.5.1 Registreer.aspx... 90 3.6 Opgaven... 97
Inhoudsopgave 1 Inleiding 8 1.1 Het.Net Framework................................ 8 1.1.1 Het.Net Ontwikkelingsmodel....................... 8 1.1.2 Compilatie en Uitvoering in.net.....................
INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...
Inhoudsopgave INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... 3 1 OOP EN.NET... 11 1.1 Inleiding... 11 1.2 Kwaliteit van een programma... 11 1.2.1 Correctheid en bruikbaarheid... 11 1.2.2 Robuustheid...
ASRemote WebService. Via deze webservice kunt u:
ASRemote WebService De ASRemote WebService is een SOAP Webservice die softwarematige communicatie met Exact Globe mogelijk maakt vanaf een willekeurige locatie op het internet. Via deze webservice kunt
Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren
Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen
DATA- WAREHOUSE ONTWIKKELING
MODEL GEDREVEN DATA- WAREHOUSE ONTWIKKELING MET MICROSOFT BI door Willem Otten, Microsoft BI-consultant Kadenza Lees het volledige artikel en andere blogs op www.playitsmart.nl/blog Ik ben een groot voorstander
Object Oriented Programming
Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming
SQL datadefinitietaal
SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen
[TOETS SQL INLEIDING]
2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10
Les 15 : updaten van gegevens in de database (deel2).
Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken
Technische nota AbiFire5 Rapporten maken via ODBC
Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...
Les 11 : Basis SQL (deel2).
Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit
Dynamiek met VO-Script
Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software [email protected] Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries
Kleine cursus PHP5. Auteur: Raymond Moesker
Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven
Informatie & Databases
Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat
www.ikdoeict.be DATA BINDING Hans Gruyaert en Rogier van der Linde 2009-2010
www.ikdoeict.be DATA BINDING Hans Gruyaert en Rogier van der Linde 2009-2010 Inleiding Data Binding Koppelen van data uit een databron aan webcontrols Webcontrols: DropDownList, RadioButtonList, GridView,
Relationele Databases 2002/2003
1 Relationele Databases 2002/2003 Hoorcollege 3 24 april 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 Plan voor Vandaag Praktische dingen 2.1, 2.3, 2.6 (alleen voor 2.2 en 2.3), 2.9, 2.10, 2.11,
MA!N Rapportages en Analyses
MA!N Rapportages en Analyses Auteur Versie CE-iT 1.2 Inhoud 1 Inleiding... 3 2 Microsoft Excel Pivot analyses... 4 2.1 Verbinding met database... 4 2.2 Data analyseren... 5 2.3 Analyses verversen... 6
Zo kan je linken maken tussen je verschillende groepen van gegevens.
1 1. Entity Reference Entity Reference zal ook een onderdeel zijn van Drupal 8. Het is een module van het type veld. Het is een heel krachtige module die toelaat om referenties te maken tussen verschillende
DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.
SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases
Versturen van email vanuit een Delphi VCL toepassing
Versturen van email vanuit een Delphi VCL toepassing Voor Delphi bestaan uiteraard verschillende libraries om emails te versturen, maar in dit voorbeeld wordt een C# Dotnet library gebruikt en aangesproken
6. Het maken van een database
6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor
Perceptive Process. Release Notes. Version: 3.5.x
Perceptive Process Release Notes Version: 3.5.x Written by: Product Knowledge, R&D Date: December 2015 2015 Lexmark International Technology, S.A. All rights reserved. Lexmark is a trademark of Lexmark
Service Data Objects. Wat is SDO? Dynamic data API
Service Data Objects Het is tegenwoordig misschien moeilijk voor te stellen maar er zijn nog steeds situaties waarbij je geen netwerk verbinding hebt. Hier ben ik de afgelopen tijd meerdere malen tegenaan
Datamodelleren en databases 2011
Datamodelleren en databases 21 Capita selecta 1 In dit college Modelleren Normaliseren Functionele afhankelijkheid 1-3N M:N-relaties, associatieve entiteittypes, ternaire relaties Weak entiteittypes Multivalued
Technische nota AbiFire Rapporten maken via ODBC
Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern
Een website maken met databasetoegang.
Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,
Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster
4. 4. Inhoud rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 4 Databank Terminologie, Navigeren, Importeren Tabellen Records/Velden manipuleren Queries (Vragen) [Ook in SQL] sorteren filter volgens
Data Warehouse Script Generator Doel
Data Warehouse Script Generator Doel Op basis van een aantal standaard sql scripts ( create table, create view ) een nieuwe sql script genereren welke alle objecten ( tables & views ) kan aanmaken in een
ASP.NET Test 2009-2010. Jan Van Ryckeghem
ASP.NET Test 2009-2010 Jan Van Ryckeghem Inhoud Exceptionhandling H4... 3 Try Catch slide 25... 3 Error pagina slide 29... 3 Error.aspx... 3 Error.aspx.cs... 4 Web.config... 4 Logbestand aanmaken... 4
DRIVEN BY AMBITION SUCCESVOL EXACT IMPLEMENTEREN IN DE PRIVATE CLOUD
DRIVEN BY AMBITION SUCCESVOL EXACT IMPLEMENTEREN IN DE PRIVATE CLOUD WOENSDAG 11 MEI INN STYLE, MAARSSEN Introduction Huub van Langerak Expert team Marc Eilander Expert team 3 Agenda Exact private cloud
Secure Application Roles
Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam
Excel Controller. Handleiding Excel Controller Wizard
Excel Controller Handleiding Excel Controller Wizard 1 Inhoud Inleiding... 3 Eigen SQL... 3 Stap 1 Eigen SQL... 3 Stap 2 Testen SQL... 8 Stap 3 Wizard... 11 Stap 4 Parameters... 13 Voorbeeld Eigen Parameter...
Koppeling met een database
PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
Ontwikkeling van een Remote Controlled Alert & Task Agent
owered by TCPDF (www.tcpdf.org) Academiejaar 2012 2013 Geassocieerde faculteit Toegepaste Ingenieurswetenschappen Valentin Vaerwyckweg 1 9000 Gent Ontwikkeling van een Remote Controlled Alert & Task Agent
DataFlex 19.0 SQL Server
Connections to SQL Server 1 Agenda Connecties Aanpassingen in applicaties 2 Connecties Kort overzicht 3 SQL manier Connectie maken met een server (login) Connectie stelt je in staat om tabellen in een
Dynamische Websites. Week 6. vrijdag 25 oktober 13
Dynamische Websites Week 6 AGENDA Herhaling Databank SQL Injection Ontwerp OO _ indien private of protected magic zo weinig mogelijk php! View MVC home.php confirm.php vehicledetail.php Controller Model
TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise
TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van
Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:
5. De oefendatabase 5.1. Inleiding In de volgende hoofdstukken ga je oefenen / werken met SQL. Om te kunnen oefenen heb je natuurlijk wel een database nodig. In dit hoofdstuk wordt besproken hoe je deze
Multi user Setup. Firebird database op een windows (server)
Multi user Setup Firebird database op een windows (server) Inhoudsopgave osfinancials multi user setup...3 Installeeren van de firebird database...3 Testing van de connectie met FlameRobin...5 Instellen
7. Het selecteren van gegevens
7. Het selecteren van gegevens 7.1. Inleiding Het doel van databases is het ontsluiten van gegevens. Een database wordt gebruikt om gegevens in op te slaan en te lezen. In dit hoofdstuk ga je door gebruik
INFITT01 - Internettechnologie WEEK 8
INFITT01 - Internettechnologie WEEK 8 Programma Databases (JDBC, JNDI, ORM, JPA) MVC & Spring/Struts EJB Databases Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de
vbg.vbnet.beginner Omgaan met files en directories binnen Visual Basic.NET
In Visual Basic 6 was het werken met bestanden en mappen niet altijd even vriendelijk. Met de komst van het FileSystemObject binnen de Microsoft Scripting Runtime library werd het al veel beter. Het.NET
Automatische Installatie op IIS server
Automatische Installatie op IIS server In de map Web staat het installatiebestand : Je kan de install starten door het aanklikken van het msi bestand vanuit Verkenner. Na installatie is steeds een manuele
Hoofdstuk: 1 Principes van databases
DBSQLF Databases en SQL Hoofdstuk: 1 Principes van databases aant Css: 4 732 blz 9 1.1 Doel ve database - om op het juiste moment op de juiste plaats de juiste gegevens beschikbaar te hebben richten we
8. Koppeling met een database
PHP7 en MySQL 8. Koppeling met een database 8.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
Eigen Widgets in CRM. Introductie. Limitering. Widgets beschikbaar stellen. Tips & Tricks Eigen Widgets in CRM
Tips & Tricks Eigen Widgets in CRM Eigen Widgets in CRM Introductie De WebUI van CRM 7.0 maakt het mogelijk om je eigen widgets te maken en deze in je eigen view te gebruiken. Dat kan door gebruik te maken
LEREN PROGRAMMEREN IN C#.NET - INTRODUCTIE ADO.NET
#INFORMATICA LEREN PROGRAMMEREN IN C#.NET - INTRODUCTIE ADO.NET BESPAAR MET DE KMO-PORTEFEUILLE 2178,00 incl. BTW I.S.M. OMSCHRIJVING Omschrijving Organisaties die op middellange termijn keuze moeten maken
Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.
Introductie Dit artikel laat zien hoe je een Image in een C# applicatie kan opslaan in een database en het kan ophalen uit de database om het te laten zien. Voor de database gebruiken we MS SQL maar voor
Van CaseTalk naar een database in SQLite studio
Van CaseTalk naar een database in SQLite studio Dit document legt uit hoe je een SQL export uit CaseTalk kunt importeren in het DBMS (Database Management System) SQLite Studio. SQLIte studio is handig
Introductie (relationele) databases
Eerste les Introductie (relationele) databases Database en DBMS Een verzameling van gestructureerd opgeslagen gegevens Dus ook een kaartenbak is een database Van oudsher waren er hiërarchische en netwerkdatabases
Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho.
Automatisering voor Financiële Dienstverleners Werken met Queries en Merge Documenten For more information visit our website at www.pyrrho.com Date: Document Nr: 30 maart, 2007 UBizzMerge, Versie 4.0 Status:
Inhoudsopgave. Theorie... 14 Praktijk... 14. Gegevens uit Database halen... 13 DML commando s... 14
SQL 2013 Inhoudsopgave Inhoudsopgave... 2 SQL begrippen... 3 Maken Database... 4 Rechten voor een Database... 4 User aanmaken... 5 Rol Toekennen aan een user... 5 Backup... 6 Theorie... 6 In SQL... 6 SQL
Oracle client 1.2 voor ixperion 1.3 en hoger
Installatiehandleiding Oracle client 1.2 voor ixperion 1.3 en hoger voor Windows 2008 R2 64bit Copyright 2010 Versie 1.0.1 Seneca 2010 1 Auteur: ing. Silvio Bosch Versiebeheer: Versie Status Datum Omschrijving
SQL Server Service Broker
Oriented Database Architectuur met SQL Server 2005 SQL Server Astrid Hackenberg en Anko Duizer In het artikel in DB/M 2 is geschreven over de Oriented Database Architectuur (SODA). In een SODA smelten
Een gelinkte lijst in C#
Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk
LINQ en SharePoint Development
.NET Framework LINQ en SharePoint Development BREED INZETBAAR EN ZORGT VOOR UNIFORME INTERFACE Mirjam van Olst Met het.net Framework 3.5 zijn de.net-talen uitgebreid met Language Integrated Query, of LINQ.
Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts
Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave
Handleiding voor Zotero versie 2.0
Handleiding voor Zotero versie 2.0 Michiel Wolda De handleiding voor Zetero is geschreven voor de lezers van het boek Deskresearch: Informatie selecteren, beoordelen en verwerken: tweede editie (Van Veen
Handleiding uitwisseling Tekla Structures RFEM versie: Dlubal RFEM 5.02 - Tekla Structures 19.1
Handleiding uitwisseling Tekla Structures RFEM versie: Dlubal RFEM 5.02 - Tekla Structures 19.1 1 Inhoudsopgave: 1 Rekenmodel maken... 3 2 Import in RFEM... 10 3 Export naar Tekla Structures... 15 2 Rekenmodel
Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).
Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige
Milieuvergunningen in FMIS
Milieuvergunningen in FMIS 1. Algemeen Elk schooldomein dient verplicht over één of meerdere milieuvergunningen te beschikken. Deze vergunningen zijn gekoppeld aan een domein zelf of aan bepaalde installaties;
What is the advantage of using expression language instead of JSP scriptlets and JSP expressions?
Web 3: Theorievragen No Scriptlets What is the advantage of using expression language instead of JSP scriptlets and JSP expressions? Geen javacode tussen de html. What is the difference between the. operator
OFFICE A LA CARTE - ACCESS 2013
OFFICE A LA CARTE - ACCESS 2013 Inhoud HOOFDSTUK ACC-1.1: TERMINOLOGIE - (0:20) Wat is een database? Onderdelen van een database Tabellen en relaties Schematisch overzicht van de structuur van een database
Een Data Driven toepassing op basis van Visual Objects en SQL Server
Een Data Driven toepassing op basis van Visual Objects en SQL Server Door Bert Dingemans www.dla-architect.nl Inleiding In voorgaande artikelen heb ik een aantal onderwerpen belicht die ten grondslag liggen
Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank
v Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank 1 Introductie: data en informatie 1.0 Wat leer je in dit hoofdstuk? 1.1 Verschil tussen gegevens en
Maximo Tips and Tricks
Maximo Tips and Tricks Agenda Tips & Tricks 1. Scherm lay-out on demand 2. Koppelen Excel en Maximo 3. Foto s toevoegen aan records 4. Type ahead functie 5. Scripting voor calculaties en validaties 6.
ETL-Generator (2) Thema Data-integratie. Drie componenttypen in de gegevenslaag
Thema Data-integratie Drie componenttypen in de gegevenslaag ETL-Generator (2) Ronald Bijlhouwer, Richard Puijk en Vincent Wylenzek De methode van ontwikkeling en bouw van het ETL-proces is aan het veranderen.
Oracle Application Server Portal Oracle Gebruikersgroep Holland Oktober 2003
Oracle Application Server Portal Oracle Gebruikersgroep Holland Oktober 2003 Page 1 1 Kees Vianen Senior Sales Consultant Technology Solutions Oracle Nederland Agenda Geschiedenis van Oracle Portal Portal
Client Applicaties (Browser+Desktop) http/https. Apache Webserver. http proxy. WMS WFS Adm SLD Tomcat. Tomcat. GeoServer. PostGIS
WMS voor Kadastrale kaart Limburg GEORZ-lab Datum: 17 juli 2009 Auteur: GEORZ-lab, Just van den Broecke Versie: 2 Contact: Ebrahim Hemmatnia (Adviseur PPI GEO, Kadaster), tel. 088 183 22 16. Inleiding
Praktijkvoorbeeld evolueerbare software-architecturen: Elgg. Salvi Jansen
Praktijkvoorbeeld evolueerbare software-architecturen: Elgg Salvi Jansen 8 januari 2011 Elgg: Open source social networking engine Introductie tot Elgg Elgg is een open source framework voor het ontwikkelen
Datastructuren Werkcollege Intro
Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs
Databases en SQL Foundation (DBSQLF.NL)
Databases en SQL Foundation (DBSQLF.NL) EXIN Hét exameninstituut voor ICT ers Janssoenborch - Hoog Catharijne Godebaldkwartier 365 3511 DT Utrecht Postbus 19147 3501 DC Utrecht Nederland T +31 30 234 48
Zelftest Inleiding Programmeren
Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze
