Dynamisk indsættelse af data

Tags:    csharp linq

Kære udviklere,

Nu bliver det lidt kryptisk, og jeg skal prøve at forklare mig så godt og forståligt som muligt.

Jeg prøver at lave en metode som kan smide ny data op i tabellen dynamisk hvor man er uafhængig af kolonens navn. Her vil jeg arbejde med loop og index.

Fold kodeboks ind/udKode 

^som overstående viser, kommer min data fra en TextBox (disse vil blive oprettet dynamisk senere). På denne måde vil jeg ikke behøve skrive kolonens navn. Dette vil være til min fordel når jeg copy/paster min kode til et nyt projekt.

Jeg startede med at lave en "demo database", hvor jeg bare brugte en alm. DataTable. Det har jeg fået til at virke fint, men nu ville jeg lave det om til at arbejde med en "rigtig" database.

Koden som virker til DataTable ser således ud:

Fold kodeboks ind/udCSharp kode 


Når jeg så kalder metoden, ser det således ud:
Fold kodeboks ind/udCSharp kode 


Håber at I kan se hvad jeg vil frem til.

Nu er problemet jo så at jeg vil omskrive koden så den arbejder med en database. Her kommer mit problem så.

Fold kodeboks ind/udCSharp kode 


^overstående kalder på tabellen jeg vil arbejde med. Men mit problem er at jeg ikke ved hvordan jeg får fat på kolonens index.

Fold kodeboks ind/udCSharp kode 


Nå, det virker ikke. Men så tænkte jeg at jeg bare kunne smide al dataen med min LINQ Query ned i en DataTable, og arbejde med det derfra. Men syntes bare ikke det virker optimalt, og det slet ikke dynamisk.

Håber at der er nogen som kan hjælpe :)



Indlæg senest redigeret d. 24.01.2013 10:38 af Bruger #16025
4 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Så du vil til hvert objekt have stående hvilken tabel den skal skrive til og når du så gemmer det så tager den dine data en efter en og ligger ind i kolonnerne efter index?

Du skal jo kunne vide at Brugere skal ligges ind i en anden tabel og en specielt rækkefølge for at det fungerer. Og at produkter skal i en anden tabel.



csharper > ja, det kan man godt sige. Altså jeg kunne jo også gøre det mere besværligt ved at vælge hvilke index'er der skal arbejdes med.

Eksempelvis
Fold kodeboks ind/udCSharp kode 


Så ville jeg jo med overstående kode loope igennem mit array istedet, og på den måde vælge specifikt hvilke kolonner der skal arbejdes med. Stadig uden at skrive deres navn, og så foregår det stadig dynamisk med loop ;).



Hvis du bruger nedenstående kode, kan du jo se om r har noget der ligner Columns eller lign.
Fold kodeboks ind/udCSharp kode 

Kilde: http://debugmode.net/2010/12/28/get-all-the-tables-name-using-linq/



Indlæg senest redigeret d. 24.01.2013 12:31 af Bruger #17215
Hvorfor vil du gøre det. Det giver ikke rigtig mening. Lav nu kolonner osv. og lav dit databaselag bevidst omkring din database. Ellers bør du bruge en NoSQL database i stedet. Det her er ikke en relationel database.

Hvordan vil du lave index, nøgler osv?



t