Loading…
Tilbage

Profilbillede

Replikering og auto generering

Sten Johanneson

Hej

Kan i komme med en anbefaling om hvorledes man kan bruge replikering datamodel (https://dawa.aws.dk/replikering/datamodel) til autogenerering af klient klasser. Jeg har i andre tilfælde haft success med NSwag (https://github.com/RSuter/NSwag) men det kræver jo at modellen overholder JSON skema definitionen eller baseret på swagger. Det kan jo ikke udelukkes at jeg overser det umiddelbare. Så alt feedback kan bruges så jeg kommer på rette vej.

/Sten

MVVM :)

https://docs.microsoft.com/en-us/dotnet/standard/cross-platform/using-portable-class-library-with-model-view-view-model

Hej Marco

Tak for din henvisning, men synes ikke det dækker mit behov. Jeg er på udkig efter en code generator som der kan omsætte modellen https://dawa.aws.dk/replikering/datamodel

Hej Sten,

Vi udstiller ikke JSON skemaer for replikerings-API'et. Hvis du vil have JSON schemaer er du p.t. nødt til selv at lave dem. Det kan evt. gøres automatiseret ud fra datamodellen vi udstiller.

Men derudover vil jeg ikke anbefale, at man anvender genererede klasser til at tilgå replikerings-API'et. Jeg tror det er bedre at lave en mere generisk klient som kan håndtere replikering af de forskellige entiteter uden at generere en klasse for hver entitet.

Vi er i øvrigt ved at lægge sidste hånd på en en referenceklient til replikerings-API'et, som vi forventer at lave en nyhed om i løbet af denne uge. Den er baseret på NodeJS (ligesom resten af DAWA), og understøtter PostgreSQL som database. Den er fuldt fungerende, og kan måske tjene til inspiration.

Du kan læse en guide til at anvende replikerings-klienten her:

https://dawa.aws.dk/dok/guide/replikeringsklient

Kildekoden er her: 

https://github.com/DanmarksAdresser/Dawa/tree/master/packages/replication-client

Hej Anders

Tak for dit svar og vil tage et kig på jeres kommende løsning

Jeg har nu endelig har tid til at kigge på replikeringsklient og har fuldt jeres guide, og replikering ser ud til at virke helt fint. Så lang så godt. Jeg har også aktiveret logikken omkring "Ændringstabeller". Og det var min forståelse at hvis man havde skabt sit tabel grundlag ved brug af gen-schema kommandoen med parameteren --with-change-tables. Så ville de ændringerne der måtte have været sket siden sidste replikering, automatisk blive registreret i "_changes" tabellerne.
Desværre for mig forbliver "_changes" tabellerne tomme, selvom jeg kan se at der er både "insert", "update" og "delete". Har i et godt bud på hvorfor jeg ikke får ændringerne lagt ind i "_changes" tabellerne.
Har ikke selv lige luret hvad jeg gør galt. Håber i kan hjælpe mig med at forstå.
Mvh
Sten

Hej Sten,

Det lyder som en fejl, hvis ændrings-tabellerne ikke populeres. Jeg tager et kig på det og vender tilbage.

Mvh.

Anders

Hej Anders

Tak for hurtig svar. Vil vente på din tilbagemelding.

Mvh

Sten

Jeg har releaset en version 1.1.15 af replikerings-klienten til NPM, som løser problemet med de manglende ændringer i ændrings-tabellerne.

Tak for jeres feedback.

Hej Anders

Får npm dependency fejl på den ny version.

Fejlen siger:

λ npm update -g @dawadk/replication-client
npm ERR! code ETARGET
npm ERR! notarget No matching version found for @dawadk/import-util@^1.0.15

Sten

Hej Sten,

Beklager fejlen. Den skyldes, at replikerings-klienten deler kode med resten af DAWA, og den delte kode var ikke blevet korrekt publiceret til NPM.

Det skulle fungere nu.

Hej Anders

Nu ser det meget bedre ud, både npm pakke og "_changes" virker nu.

Mange takt for hjælpen.

/Sten

Rettet: Skrev i forkerte tråd.

ændret af Klaus Johansen (11.03.2019)

Hej Sten. Vi genereret C# klasser til Entity Framework udfra datamodellen med et lille hjemmelavet konsolprogram. Tip: husk at benytte attribut DatabaseGenerated(DatabaseGeneratedOption.None) på kolonner der er keys.

Hej Jacob. Tak for dit tip. Den mulighed har jeg også haft i tankerne. Men efter jeg blev gjort opmærksom på DAWA's egen replikerings-klienten (https://dawa.aws.dk/dok/guide/replikeringsklient) og har afprøvet denne. Er valgt at bruge denne fremadrettet. Samtidig er setup'et dejlig enkelt hvor DAWA har lavet det tunge arbejde, som jeg ser det.