Avatar billede dl Nybegynder
30. april 2008 - 11:26 Der er 10 kommentarer og
1 løsning

Backend til flere regnskaber, entity navn ændre sig.

Jeg skal have lavet et backend system, som linker op imod navision (som køre på en SQL database).

I denne database har jeg nogle tabler.
deres syntax er lavet således:

<regnskabsnavn>$<entity>

fx

<regnskabsnavn>$Item
<andenRegnskabsnavn>$Item

og sådan bliver den ved for alle entity.
Så for alle entity er regnskabsnavnet foran.

Jeg kunne godt tænke mig at lave et backend system, hvor jeg måske bare sender  en datacontext med og måske et regnskabsnavn, Og så skal jeg via mit backend system, hente obj op, og måske i næste version gemme obj også.

Hvordan kan dette lade sig gøre. Jeg kan ikke lade vs2008 genere metadata via linq til dette formål, da regnskabsnavnet jo ændre sig,  dog gør metadataen ikke.

og hvis jeg laver en datacontext via linq til hvert regnskab, så skal mit backend system jo kunne behandle det, da navnet ændre sig.

Jeg håber i forstå mit problem da det er pænt svært at forklar.

// dl

PS. spørger, hvis det er noget, som jeg ikke har gjort helt klart.




942 Aller$Item Amount
Avatar billede sovsekoder Nybegynder
30. april 2008 - 17:25 #1
kan du ikke lave et sql-query via ADO.NET der henter data op, og derefter mapper du det selv til en hjemmelavet entitet der har de properties der er interessante i din sammenhæng?
Avatar billede dl Nybegynder
30. april 2008 - 20:25 #2
Jo det kunne jeg godt, men det er det jeg godt ville undgå, da der vil være MEGET arbejde i det.

Og der må være en smart måde at gøre dette på.
Avatar billede sovsekoder Nybegynder
30. april 2008 - 21:04 #3
jeg forstår dig således at du har et antal tabeller der er navngivet således:
aarsregnskab2007$poster
aarsregnskab2007$adresser
aarsregnskab2007$indbetalinger
aarsregnskab2008$emails
aarsregnskab2008$personer

altså 5 tabeller med forskellige navn og med forskellige kollonner. Det kan ikke automatiseres.

-der er afgjort noget jeg misforstår, men hvad?
Avatar billede arne_v Ekspert
30. april 2008 - 21:15 #4
Alt det bruger code generation eller parameters dur ikke til den data struktur.

Jeg er bange for at du haenger paa god gammel dynamisk SQL.

NB: husk og faa groent lys fra jeres revisorer inden I begynder at opdatere i
    regnskabs databasen.
Avatar billede dl Nybegynder
01. maj 2008 - 09:07 #5
sovsekoder, sjovt navn.
jeg har en masse tabeller som ser sådan ud.

aarsregnskab2007$poster
aarsregnskab2007$adresser
aarsregnskab2007$indbetalinger
aarsregnskab2007$emails
aarsregnskab2007$personer



aarsregnskab2008$poster
aarsregnskab2008$adresser
aarsregnskab2008$indbetalinger
aarsregnskab2008$emails
aarsregnskab2008$personer


metadataen er den samme.
Burde man ikke kunne lave en datacontext, og lade systemet auto genere koden "on the fly", da det jo er SAMME metadata vi har med at gøre.

Eller en anden mulighed er: at jeg laver datacontext for system, til et bestemt aarsregnskab, men så skal jeg stadig have en backend som har noget logic til at administrere flowet. Og det har ikke været mig mulig, da få adgang til disse oo på denne måde.  Hvis i forstår mig.
Avatar billede sovsekoder Nybegynder
01. maj 2008 - 10:18 #6
jeg kender ikke til .NET3.5/LINQ, som du formegentlig efterspørger.

Det grundlæggende i dit problem må være at få skiftet tabel navne ud i den sql der henter data. Hvilket bliver dynamisk sql, som arne_v skriver. Mit gæt er at LINQ kræver 1 klasse pr. entitet, hvilket tvinger dig til at lave 10 klasser i eksemplet. Man kan sikkert lave en "basis entitet" for f.eks. poster, og have to klasser der nedarver fra denne: regnskab2007Poster og regnskab2008Poster, for at spare noget implementering. Men det er ingen generisk løsning, som vil kunne anvendes fra nu og mange år frem uden ændringer i koden.

Hvis du skal lave et generisk system, tror jeg du selv skal kode det. - men LINQ er ikke min hjemmebane ;)
Avatar billede dl Nybegynder
01. maj 2008 - 10:30 #7
ja, jeg ved godt jeg er ved at falde ud over klippen :)
Sovsekoder, du har ret i det du siger.

aarsregnskab2008$personer = aarsregnskab2007$personer = samme metadata = forskellige tablename

Burde det ikke være muligt selv at genere koden on the fly, eller som mit anden bud

give systemet datacontext som en pararemeter, men da have et backend som stadig kan køre min logic for mig.

Ved ikke om det er mig, der køre rundt i det samme.
Jeg vil helst ikke rode mig ud i at skulle kode mine entityes, da der er mange attributter, og jeg ikke er en taste abe  :D
Avatar billede dl Nybegynder
05. maj 2008 - 19:39 #8
Arne_v vil du give et svar, da jeg må konstatere at du har ret i at man ikke kan autogenere den kode som jeg skal bruge. Og er derfor nødtil at lave det med dynamisk sql.

hvis du har et par artikler på det, skal du ikke holde dig tilbage.

//dl
Avatar billede arne_v Ekspert
06. maj 2008 - 04:09 #9
svar

jeg har ikke lige nogle gode links på lager

men du må kunne lave et DAL hvor du sender prefix med over som argument og indsætter
i SQL streng
Avatar billede nielle Nybegynder
06. maj 2008 - 07:02 #10
Faktisk lidt lige som det arne_v foreslår:

Hvad med at lade VS2008 generere LINQ filerne for en af databaserne – f.eks. for aarsregnskab2007.
Derefter går du ind i denne kode og retter i den:

Du tilføjer et argument i constructoren, som skal tage regnskabsnavnet - dvs. f.eks. aarsregnskab2007 eller aarsregnskab2008.
Så søger du hele koden igennem og hvert sted hvor at du finder regnskabsnavnet ændre du kiden til at bruge variablen i stedet for den hårdkodede værdi.
Avatar billede dl Nybegynder
06. maj 2008 - 19:31 #11
nielle, problemmet er med den generet kode, der skriver den over public ...

[noget entety  tablename = bla bla]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Danmarks Meteorologiske Institut

IT-operatør søges til DMI

Udviklings- og Forenklingsstyrelsen

Systemejer/Application Manager til SAP-installationer

Netcompany A/S

Network Engineer

Udviklings- og Forenklingsstyrelsen

Backend-udvikler til ny platform i Azure