Inleiding De toepassing
Met deze handleiding moet u in staat zijn om zelf een mobile applicatie te ontwikkelen voor offline gebruik met een filter. • •
• • • •
Maak een Smart Device project aan. Voeg een nieuwe Windows Communication Foundation (WCF) Service Library toe die dient als tussenlaag tussen de lokale database cache de echte database. Voeg daarna een local database cache toe. Configureer de synchronisatie-instellingen. Configureer en start de WCF Service. Voeg een synchronisatiefunctionaliteit toe aan je programma. Test de applicatie.
Benodigdheden: • • • • •
Inhoud
Installeer de Northwind database op je SQL Server. Installeer Windows Mobile Device Center of ActiveSync (Vanaf Windows Vista). Installeer Visual Studio 2008 Service Pack 1. Installeer Microsoft Synchronization Services for ADO.NET. Installeer Microsoft SQL Server Compact 3.5 Service Pack 1 for Windows Mobile.
Onderdeel Inleiding Smart Device project aanmaken WCF Service aanmaken WCF Service Library toevoegen Local Database Cache toevoegen Synchronisatie-instellingen configureren Data connecties voor server en client databases aanmaken Tabellen toevoegen en configureren voor local caching Verdeel synchronisatie componenten over client- en serverprojecten Meer info over items die zijn toegevoegd (Client side) Meer info over items die zijn toegevoegd (Server side) Configureer en start de WCF Service Codeer Synchronisatie Features Web reference toevoegen Formulier applicatie aanpassen voor synchronisatie Test applicatie Filter Toepassen Filter-parameter via client meegeven Filterparameter instellen op aan serverkant Workaround filter toepassen Filter-parameter via client meegeven Filter-statements genereren SQL Compact Code Generator Installatie Code genereren met tool
Pagina 1 2 3 3 3 4-7 4 5 5 6 7 8-9 10 10 11 12 13 13 13 14 14 14 - 16 17 17 17 1
Smart Device project aanmaken Wat?
Project aanmaken
De applicatie voor op de PDA maken.
1. Maak een nieuw project. 2. Kies als Solution Demo project en voor het project InspectorApp. 3. Bij projecten kies je voor Smart Device en zorg je ervoor dat er rechts boven .NET Framework 3.5 staat. 4. Klik OK. 5. Het Add New Smart Device Project dialoogvenster zal nu verschijnen. Hier kies je voor: - Windows Mobile 5.0 Pocket PC SDK als target Platform -.NET Compact Framework versie 3.5 als .NET CF version - Device application als Template klik OK. 6. Het project is aangemaakt.
2
WCF Service aanmaken
Inleiding
Om te kunnen synchroniseren met een server heb je een WCF Service nodig om dit tot een goed einde te brengen.
WCF Service Library toevoegen
1. In het File menu, kies Add en klik dan New Project. 2. Noem het project MiddleTierServiceLibrary. 3. Klik op WCF onder Project types, kies vervolgens WCF Service Library als template. 4. Klik OK. Het MiddleTierServiceLibrary project is aangemaakt en toegevoegd aan de Solution Explorer.
Local Database Cache toevoegen
1. Klik rechts op het MiddleTierServiceLibrary project, kies Add, en klik dan op New Item. 2. Kies de Local Database Cache template en noem het InspectorCache.sync. 3. Klik op Add. Een InspectorCache.sync bestand is toegevoegd aan de Solution Explorer en het Configure Data Synchronization dialoogvenster verschijnt. InspectorCache.sync zal de configuratie van de synchronisatie opslaan.
3
Synchronisatie-instellingen configureren
Data connecties voor server en client databases aanmaken
1. Gebruik het Configure Data Synchronization om een connectie te maken met de Inspector database dat je net hebt geïnstalleerd. Dit is de remote database die buiten je PDA-applicatie staat. Je kiest deze connectie, moest deze nog niet bestaan klik je op New en maak je de connectie aan. Opmerking: Voor het welzijn van het project kan het handig zijn dat je Change Tracking inschakelt. 2. Gebruik de standaardwaarde, in dit geval Inspector.sdf (new) voor de client. Het Configure Data Synchronization dialoogvenster maakt een nieuwe SQL Server Compact 3.5 database aan en voegt het toe aan het project. Wanneer je de databaseconnectie hebt ingegeven, haalt het dialoogvenster de beschikbare tabellen op. Wanneer de lijst van de beschikbare tabellen opgehaald is, verschijnt de Add knop. Opmerking: De ok-knop is op dit moment nog niet ingeschakeld, dit gebeurd pas wanneer je tabellen hebt geselecteerd.
Vervolg op de volgende pagina
4
Synchronisatie-instellingen configureren (vervolg) Tabellen toevoegen en configureren voor local caching
1. Klik op de Add knop om de beschikbare tabellen te tonen. 2. Selecteer alle nodige tabellen. Opmerking: Je kan hier ook de synchronisatie-instellingen aanpassen naar wens. 3. Accepteer de standaard kolom- en tabelwaarden. Klik OK. Het dialoogvenster creëert de tracking kolommen en een deleteditems tabel als dat nodig is. De tabellen zijn toegevoegd aan de lijst van de gecachte tabellen.
1. In het Configure Data Synchronization dialoogvenster, klik op Verdeel Advanced. synchronisatie 2. Op de client project locatie, kies voor InspectorApp. componenten 3. Klik OK. over client- en Na dat de data synchronisatie is geconfigureerd, worden de serverprojecten componenten verdeeld over de client en de server. Ondertussen verschijnt het Generate SQL scripts dialoogvenster. Het genereert standaard kolommen en tabellen die de wijzigingen van geüpdatete en verwijderde gegevens bijhouden. 4. Klik OK. De gegenereerde SQL-scripts worden opgeslagen in het server-project indien nodig. De Inspector.sdf client database wordt aangemaakt in het client project en wordt voor de eerste keer gesynchroniseerd met de server database. Opmerking: SQL scripts worden enkel gecreëerd als er veranderingen nodig zijn op de server. Als de server al zo’n tabellen heeft, of je hebt Change Tracking ingeschakeld, worden deze niet aangemaakt. 5. Wanneer de Data Source Configuration Wizard verschijnt, selecteer je de tabellen. 6. Klik Finish. InspectorDataSet.xsd is toegevoegd aan het client project en de dialoogvensters verdwijnen.
Vervolg op de volgende pagina
5
Synchronisatie-instellingen configureren (vervolg)
Meer info over items die zijn toegevoegd (Client side)
Inspector.sdf Een lokale database die de gecachte data bevat van SQL Server. InspectorCache.Client.sync Een Xml-bestand dat de synchronisatie-informatie bevat. Dubbelklik hierop om het Configure Data Synchronization dialoogvenster te openen. InspectorCache.Client.Designer.cs Een codebestand dat definities bevat voor de client Sync provider en de Sync agent. Het bevat ook de Sync tabellen voor de lokale database. InspectorDataSet.xsd De typed dataset die gegenereerd is door de Data Source Configuration wizard. Deze dataset bevat de tabellen waarin data zit van de lokale database. References\Microsoft.Synchronization.Data References\Microsoft.Synchronization.Data.SqlServerCe Benodigde references van Microsoft Synchronization Services for ADO.NET.
Vervolg op de volgende pagina
6
Synchronisatie-instellingen configureren (vervolg)
Meer info over items die zijn toegevoegd (Server side)
InspectorCache.sync Een Xml-bestand dat de synchronisatie-informatie bevat. Dubbelklik hierop om het Configure Data Synchronization dialoogvenster te openen. InspectorCache.Designer.cs Een codebestand dat definities bevat voor de client Sync provider en de Sync agent. Het bevat ook de Sync tabellen voor de lokale database. InspectorCache.SyncContract.cs Een codebestand dat de WCF contract definitie en zijn implementatie bevat. SQL-Scripts folder Een map van SQL scripts. De scripts in deze map dienen om de wijzigingen op de server na te gaan. Enkele scripts in deze map creëren de tracking kolommen, de tabel van de verwijderde items. Andere scripts in deze map creëren triggers die veranderingen opslaan in de database. Opmerking: SQL scripts worden enkel gecreëerd als er veranderingen nodig zijn op de server. Als de server al zo’n tabellen heeft, of je hebt Change Tracking ingeschakeld, worden deze niet aangemaakt. SQL Undo Scripts folder Deze scripts verwijderen de wijzigingen in de database. Deze scripts dienen dus om de wijzigingen ongedaan te maken indien er iets is misgegaan. References\Microsoft.Synchronization.Data References\Microsoft.Synchronization.Data.Server De benodigde references voor Microsoft Synchronization Services for ADO.NET.
Vervolg op de volgende pagina
7
Configureer en start de WCF Service
Configureer 1. In de Solution Explorer, dubbelklik op InspectorCache.SyncContract.cs en start de om het bestand te openen in de editor. WCF Service 2. Voeg het XmlSerializerFormat() attribuut toe net voor de definitie van IInspectorSyncContract en maak gebruik van []. 3. In de Solution Explorer, dubbelklik op App.config. 4. Voer de volgende veranderingen door in het App.config-bestand. Deze veranderingen configureren het project om de InspectorCacheSyncService te hosten die gegenereerd is door het configure Data Synchronization dialoogvenster in plaats van de standaardservice die gegenereerd is door de WCF project template. •
•
•
Verander <service name="MiddleTierServiceLibrary.Service1" behaviorConfiguration="MiddleTierServiceLibrary.Service1Behavior"> in <service name="MiddleTierServiceLibrary.InspectorCacheSyncService" behaviorConfiguration="MiddleTierServiceLibrary.InspectorCacheSyncS erviceBehavior"> Verander
in :8731/MiddleTierServiceLibrary/InspectorCacheSyncService/" /> Verander <endpoint address="" binding="wsHttpBinding" contract="MiddleTierServiceLibrary.IService1"> in <endpoint address="" binding="basicHttpBinding" contract="MiddleTierServiceLibrary.IInspectorCacheSyncContract"> Opmerking: wsHttpBinding is niet ondersteund op mobiele apparaten.
• •
Verander in Verander in
Vervolg op de volgende pagina
8
Configureer en start de WCF Service (vervolg)
Configureer en start de WCF Service
5. Klik rechts op MiddleTierServiceLibrary in de Solution Explorer en klik op Set as StartUp Project. 6. Om de WCF Service te starten, klik op Start Without Debugging in het Debug menu. 7. Het Deploy InspectorApp dialoogvenster verschijnt. 8. Klik op Cancel en dan op Yes om verder te gaan. Opmerking: Je start alleen de WCF Service, de emulator is hier dus nog niet nodig. De WCF Service Host wordt gestart (het icoon verschijnt in de taakbalk) en host the service. De WCF Test Client verschijnt en maakt het mogelijk om de service te testen. Opmerking: Zorg ervoor dat de poort toegankelijk is en niet geblokkeerd is door een firewall.
9
Codeer Synchronisatie Features
Web reference toevoegen
1. In de Solution Explorer, klik rechts op InspectorApp, en klik dan op Add Web Reference. Het Add Web Reference dialoogvenster verschijnt. 2. Typ het adres van de InspectorCacheSyncService, zoals http://IP Adres:8731/InspectorCacheSyncService/, in de URL invoerveld, klik op Go. Opmerking: Zorg ervoor dat er geen firewalls poort 8731 blokkeren. Wanneer de InspectorCacheSyncService Web service gevonden is, wordt de Add-knop ingeschakeld. Opmerking: Het service adres kan gevonden worden in het App.config bestand. 3. Noem de Web reference InspectorCacheWebRef, en klik op Add Web Reference. InspectorCacheWebRef verschijnt dan onder Web References in de Solution Explorer. Visual Studio genereert het bestand Reference.cs. Alleen zie je dit bestand niet verschijnen in de Solution Explorer. 4. Volg de volgende stappen om Reference.cs aan te passen: a. Dubbelklik op InspectorCacheWebRef om het te openen in de Object Browser. b. Vouw de module InspectorApp.InspectorCacheWebRef uit. c. Klik rechts op InspectorCacheSyncService en Klik op Go To Definition. a. Reference.cs is geopend in de Code Editor. d. Voeg de volgende usings toe: a. using Microsoft.Synchronization; b. using Microsoft.Synchronization.Data; e. Verwijder alle klassen en enumeraties in het bestand behalve InspectorCacheSyncService. Opmerking: De verwijderde types zijn al opgenomen in de net toegevoegde Microsoft. Synchronization en Microsoft.Synchronization.data.
Vervolg op de volgende pagina
10
Codeer Synchronization Features (vervolg) Formulier applicatie aanpassen voor synchronis atie
1. In de Solution Explorer, dubbelklik op Form1 om het te openen in de Visual Studio designer. 2. Sleep het icon van de Planning van Data Sources op het formulier. 3. In het formulier voegt u een knop toe met als naam ‘Synchronize Now’ en verander de naam van de knop in ‘SynchronizeMenuItem’. Opmerking De gebruiker zal dus op de knop ‘Synchronize Now’ klikken op het synchronisatie-proces te starten. 4. Dubbelklik op de knop ‘Synchronize Now’ om een eventhandler te maken en het te openen in de Code Editor. 5. Voeg de code hieronder toe om te synchroniseren en de Planning tabel in de dataset op te vullen. Cursor.Current = Cursors.WaitCursor; // The WCF Service InspectorCacheWebRef.InspectorCacheSyncService webSvcProxy = new InspectorApp. InspectorCacheWebRef.InspectorCacheSyncService(); // The Remote Server Provider Proxy Microsoft.Synchronization.Data.ServerSyncProviderProxy serverProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(webSvcProxy); // The Sync Agent InspectorCacheSyncAgent syncAgent = new InspectorCacheSyncAgent(); syncAgent.RemoteProvider = serverProvider; syncAgent.Customers.SyncDirection = Microsoft.Synchronization.Data.SyncDirection.Bidirectional; // Synchroniseer de databases Microsoft.Synchronization.Data.SyncStatistics stats = syncAgent.Synchronize(); // Herlaad de DataSet/Datagrid met de gegevens van de lokale database tblPlanningTableAdapter.Fill(iNSPECTORDataSet.TblPlanning); // Toon de synchronisatie statistieken MessageBox.Show("Changes Downloaded: " + stats.TotalChangesDownloaded.ToString() + "\r\n" + "Changes Uploaded: " + stats.TotalChangesUploaded.ToString()); Cursor.Current = Cursors.Default;
De DataGridView toont de Customers table van de locale database cache (het Inspector.sdf bestand in het project).
11
Test-applicatie
Test applicatie
1. In het tools menu klik je op Device Emulator Manager (DEM). Het Device Emulator Manager venster toont een lijst van alle beschikbare emulators. 2. Klik rechts op USA Windows Mobile 5.0 Pocket PC R2 Emulator en klik op Connect. De Pocket PC - WM 5.0 Device Emulator verschijnt. 3. Klik rechts in het Device Emulator Manager venster op de verbonden emulator en klik op Cradle. Windows Mobile Device Center of ActiveSync verbind zich met de verbonden emulator. Als Windows Mobile Device Center of ActiveSync aanbieden om het apparaat te configureren, klik dan op Connect without setting up your device of Cancel. Opmerking: De verbinding met Windows Mobile Device Center of ActiveSync geeft de emulator toegang tot InspectorCacheSyncService dat op de computer draait. Om te kunnen connecteren met de device emulator, dan moet de configuratie van de verbinding in Windows Mobile Device Center of ActiveSync geconfigureerd zijn om DMA connecties toe te laten. 4. Klik rechts op ‘InspectorApp’ in de Solution Explorer en klik op ‘Set as StartUp Project’. 5. Druk op F5 om te debuggen. 6. Ga nu terug naar het formulier in de Pocket PC - WM 5.0 Device Emulator en druk op ‘Insert Row’. De locale-en serverdatabase zijn niet langer gesynchroniseerd. Maar er moet nu een nieuwe rij zichtbaar zijn in de Datagrid. 7. Klik op ‘Synchronize Now’. De locale database en de serverdatabase moeten nu beide een nieuwe rij hebben. 8. Op uw computer gebruik je Server Explorer/Database Explorer (of een andere database tool) om te connecteren met de serverdatabase en dan kan je verifiëren of de nieuwe rij in de database bestaat. 1. In de Server Explorer/Database Explorer zoek je de Customers table op de serverdatabase 2. Klik rechts op de Planning table en klik op ‘Show Table Data’. 3. Verifieer dat de nieuwe rij bestaat. 4. Klik rechts op de nieuwe rij en klik dan op ‘Delete’. De databases zijn nu niet meer synchroon. 9. Ga nu weer terug naar het formulier in Device Emulator en klik op ‘Synchronize Now’. 10. Verifieer dat de wijzigingen aan de serverdatabase gesynchroniseerd zijn met de lokale database en dat de rij niet meer in de Datagrid staat. 11. Sluit het formulier.
12
Filter toepassen
Filterparameter via client meegeven
1. Ga naar de code van het formulier waar de synchronisatie staat. 2. Zoek in de code naar de ‘Sync Agent’. 3. Voeg volgende regel toe: syncAgent.Configuration.SyncParameters.Add(new SyncParameter("@NaamParameter", waarde)); 4. Stap 3 herhalen voor meerdere parameters. Nu kan er aan de server kant gefilterd worden volgens de ingegeven parameters.
Filterparam 1. Ga naar InspectorCache.Designer.cs onder de node eter InspectorCache.sync. instellen op 2. Open de partial class van de tabel waar er moet worden gefilterd. aan 3. Zoek nu bij ‘InitializeCommands’ naar ‘SelectIncrementalInsertsCommand.CommandText’. serverkant 4. Typ in het begin van de WHERE: (NaamKolomVanTabel = @NaamParameter AND (…) ). Opmerking: De naam van de parameter moet dezelfde zijn als de parameter die bij de client werd meegegeven voor deze stap en volgende stappen 5. Voeg volgende regel toe op het eind van de ‘SelectIncrementalInsertsCommand’: this.SelectIncrementalInsertsCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@NaamParameter", System.Data.SqlDbType.(TypeParameter)); 6. Zoek nu naar ‘SelectIncrementalUpdatesCommand.CommandText’. 7. Typ in het begin van de WHERE: NaamKolomVanTabel = @NaamParameter AND . 8. Voeg volgende regel toe op het eind van de ‘SelectIncrementalUpdatesCommand: this. SelectIncrementalUpdatesCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@NaamParameter", System.Data.SqlDbType.(TypeParameter)); 9. Voor meerdere parameters stappen 3 tot 8 herhalen met de andere parameters.
13
Workaround filter toepassen
Filterparameter via client meegeven
1. Ga naar de code van het formulier waar de synchronisatie staat. 2. Zoek in de code naar de ‘Sync Agent’. 3. Voeg volgende regel toe: syncAgent.Configuration.SyncParameters.Add(new SyncParameter("@NaamParameter", waarde)); 4. Stap 3 herhalen voor meerdere parameters. Nu kan er aan de serverkant gefilterd worden volgens de ingegeven parameters.
Filterstatements genereren
1. We maken de statements per tabel klaar die ertussen gevoegd moeten komen. 2. We halen de selectIncremental commands op. Alle 3: Insert, Update en delete. 3. Bij het teruggeven van de commands roepen we “MakeFilter…” aan voor elk van de 3 commands. 4. Maak de functie MakeFilterInsert die een IDbCommand teruggeeft. Met volgende parameters: IDbCommand selectIncrementalInsertsCommand = de gegenereerde sql syntax. string filter = de filter die van toepassing voor de tabel voor de inner joins. string WhereEindGroupBy = voor de eventuele group by die nodig is. string tabel = de tabel waar er iets moet worden gefilterd. public IDbCommand MakeFilterInsert( IDbCommand selectIncrementalInsertsCommand, string filter, string WhereEindGroupBy, string tabel) { return selectIncrementalInsertsCommand; } 5. Voeg bovenaan de filter klasse volgende variabelen toe en de datums die nodig zijn voor de filter. string datumBegin; string datumEind; public void SetDatums(int aantalDagen) { datumBegin = (DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.AddDays(aantalDagen).Day.ToString()); }
Vervolg op de volgende pagina
14
Workaround filter toepassen (vervolg)
Filterstatements genereren
datumEind = (DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.AddDays(aantalDagen).Day.ToString()); string PlanningFilter; string BeginWhere = "WHERE"; string EindWhere = "<> @sync_client_id_binary)"; 6. Voeg de algemene where filter toe. public void setPlanningFilter() { PlanningFilter = " (Userid = @gebruiker AND Datum BETWEEN '" + datumBegin + "' AND '" + datumEind + "') AND "; } 7. Maak de zoekterm voor de from klaar. string BeginFrom = "FROM " + tabel; 8. Nu voegen we de filters toe op de voorgedefinieerde plaatsen in de insert sql code. We zoeken waar BeginWhere de eerste keer voorkomt, voegen de lengte van BeginWhere er aan toe en dan hebben de locatie waar de filter moet geplaatst worden en dan voegen we de filter toe. selectIncrementalInsertsCommand.CommandText = selectIncrementalInsertsCommand.CommandText.Insert(selectInc rementalInsertsCommand.CommandText.IndexOf(BeginWhere) + BeginWhere.Length, " (" + PlanningFilter); selectIncrementalInsertsCommand.CommandText = selectIncrementalInsertsCommand.CommandText.Insert(selectInc rementalInsertsCommand.CommandText.IndexOf(EindWhere) + EindWhere.Length, ")" + WhereEindGroupBy); We doen hetzelfde voor de 2de ‘where’. selectIncrementalInsertsCommand.CommandText = selectIncrementalInsertsCommand.CommandText.Insert(selectInc rementalInsertsCommand.CommandText.LastIndexOf(BeginWhere) + BeginWhere.Length, " (" + PlanningFilter); selectIncrementalInsertsCommand.CommandText = selectIncrementalInsertsCommand.CommandText.Insert(selectInc rementalInsertsCommand.CommandText.LastIndexOf(EindWhere) + EindWhere.Length, ")");
Vervolg op de volgende pagina
15
Workaround filter toepassen (vervolg)
Filterstatements genereren
9. Hier gebeurt hetzelfde als voor de BeginWhere maar dan voor BeginFrom. selectIncrementalInsertsCommand.CommandText = selectIncrementalInsertsCommand.CommandText.Insert(selectInc rementalInsertsCommand.CommandText.IndexOf(BeginFrom) + BeginFrom.Length, filter); selectIncrementalInsertsCommand.CommandText = selectIncrementalInsertsCommand.CommandText.Insert(selectInc rementalInsertsCommand.CommandText.LastIndexOf(BeginFrom) + BeginFrom.Length, filter); 10. Als deze code is toegevoegd, moeten we alleen nog de filter parameter toevoegen. selectIncrementalInsertsCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@gebruiker", System.Data.SqlDbType.NVarChar)); 11. Herhaal al deze stappen voor de Update en Delete. 12. Let wel op dat je bij tblOpmerkingen beter een andere filter kan gebruiken. Deze tabel heeft namelijk van zichzelf al de juiste filterkolommen. Zet dus in het begin van elke methode (insert, update en delete) deze code: if (tabel == "dbo.TblOpmerkingen") { PlanningFilter = filter; filter = ""; } else { setPlanningFilter(); }
13. Bij de tabel tblOpmerkingen wordt de filter dan: string PlanningFilterOpmerking = " dbo.TblOpmerkingen.[User] = @gebruiker AND Afgemeld = 0 AND (dbo.TblOpmerkingen.[Datum] BETWEEN '" + datumBegin + "' AND '" + datumEind + "') AND "; string tabel = "dbo.TblOpmerkingen"; 14. De rest kan gewoon hetzelfde gedaan worden zoals bij de andere tabellen.
16
SQL Compact Code Generator
Installatie
1. 2. 3. 4.
Ga naar http://sqlcecodegen.codeplex.com/ Kies bij downloads voor Build 1.2.0.3 Stabiele versie Download SQL Compact Code Generator Installer Voer het bestand uit: SQL Compact Code Generator 1.2.0.3.msi en installeer het programma.
SQL Compact Code Generator is nu geïnstalleerd.
Code genereren met tool
1. Ga naar het project dat je hierboven hebt gemaakt en selecteer het .sdf bestand bij de mobiele applicatie. 2. Bekijk nu de properties van het .sdf bestand. 3. Typ ‘sqlcecodegenerator’ bij Custom Tool
SQL Compact Code Generator heeft nu een .cs bestand toegevoegd bij het .sdf bestand. In dit bestand worden nu methodes aangemaakt om makkelijk objecten te creëren, updaten en deleten. Om het pad van het .sdf-bestand minder gevoelig te maken aan map wijzigingen is het aangeraden om de code in EntityBase te wijzigen in de onderstaande code: static EntityBase() { var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); ConnectionString = string.Format("Data Source={0}\\Inspector.sdf", path); }
Meer documentatie kan je vinden op: http://sqlcecodegen.codeplex.com/wikipage?title=Targeting%20the%20.N ET%20Full%20and%20Compact%20Framework&referringTitle=Document ation
17