Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kad kreirati tip na osnovu tabela?

[es] :: .NET :: Kad kreirati tip na osnovu tabela?

[ Pregleda: 1811 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Kad kreirati tip na osnovu tabela?22.11.2009. u 08:43 - pre 175 meseci
Najcesca situacija u kojoj se nadjem je c# sa mssql bazom koja je mapirana unutar 'linq to sql' fajla.
E sad, ja veoma rijetko kreiram tipove za tabele u bazi podataka (npr. imam tabelu korisnik, ali nemam klasu korisnik), nego sav upis vrsim preko funkcije unutar kontrolera (npr. DodajKorisnika(params), BrisiKorisnika(params),...).

Postoji li neko pravilo ili savjet kada i zasto kreirati tip na osnovu tabele iz baze podataka da bih preko njega pohranjivao podatke u tabeli?

Razlog za ovo pitanje je bio taj sto sam gledao tutorial za web servise i tamo sam vidio da tip ima tabelu npr. Korisnik sa 10tak redaka. On treba popuniti neki grid sa samo 3 podatka, pa je zato kreirao klasu (tip) Korisnik i dodao joj 2 privatna clana. Zatim je kreirao funkciju koja je preko linq-a izvlacila ta tri tipa i punila klasu Korisnik koja je onda bila source za gridview.
Zanima me zbog cega je ovo ovako radio jer ja uopce ne bih kreirao dodatni tip nego bih kreirao temp objekt tabele i u nju napunio trazene podatke pa onda stavio da je taj temp objekt source datagrid-a.

Nadam se da sam jasno postavio problem i da ne moram pisati primjer
...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 11:13 - pre 175 meseci
Pa mislim da bi primer bio potreban :)

Cisto kako bi ti onda npr implementirao DajSveKorisnikeNaSlovo(char prvoSlovo)? Posto ovo vraca vise od jednog podatka ne mozes koristi ref i out, dakle treba ti neky Array ili List, a oni moraju da sadrze instance necega. To nesto je instanca klase o kojem pricamo. Sta ti koristis tu? Sta ti je temp objekat tabele?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 13:21 - pre 175 meseci
Mapiram bazu i pristupam joj preko 'static xxDataContext' objekta.
Preko linqa povucem sve sto mi treba
Code:
public List<TabelaA> GetSve()
{
return (from x in obj.TabelaA select x).ToList() 
//ili select new{x.a, x.b,...} a tada je povratni tip Object pa ga onda u kodu castam
}

i tu funkciju stavim kao source datagrid-a. I sve radi lijepo.

Medjutim, u ovom tutorialu su kreirali klasu TabelaA sa private clanovima string a, string b,... pa on onda "punili" tu glasu preko rezultata funkcije GetSve().

Radi ovoga sam pitao: "Kada raditi ovako kao ja, a kada praviti svoje tipove tabela". Mislim, select je puki odabir kolona, ne?! Sta tu treba praviti svoje tipove????
...
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 13:43 - pre 175 meseci
Pa, ako koristis Linq2SQL onda vec imas klase koje odgovaraju tabelama, samo ih nisi pravio rucno nego ti je alat sam obavio stvar.
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 14:10 - pre 175 meseci
Hm, to sam i ja mislio . Znam da klase rade ljudi koji na 'stari' nacin pristupaju bazama, otvaraju i zatvaraju konekciju, itd.
Medjutim, ovaj tutorial je bio o tome kako u Silverlight app ucitati podatke iz linq2sql fajla. link je http://www.codeproject.com/KB/...ight/Silverlight3_SQL_WCF.aspx. Evo te recenice koja me zbunjuje:
Citat:
Just by looking at the Contact table above, you can tell there is a lot of information! There are a lot of columns, such as: ContactID, NameStyle, Title, etc. Since we only want the FirstName, LastName and EmailAddress columns, we will make a custom ContactRecord class to represent each contact row from the table, instead of using the exposed Contact type.

Posto ce selektirati samo odredjene kolone, on je i pored mapiranih tabela stvorio svoju vlastitu klasu. Zasto??????
...
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 14:17 - pre 175 meseci
Bez nekog detaljnijeg pregleda tutorijala, pretpostavljam da bi smanjio kolicinu podataka koje prenosi.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 15:51 - pre 175 meseci
To sto rece shadowed (manje polja u select-u = manji SQL footprint) plus postoji razlika izmedju

from x in obj.TabelaA select new{x.a, x.b, ..}
i
from x in obj.TabelaA select new PodTabelaA(x.a, x.b,...)

a to je typing.

List<PodTabelaA> mozes da vratis van metoda za ucitavanje i onda mozes da ih konzumiras bez refleksije. Ne znam o kakvog castingu iz List<Object> si pricao, ali tip generisan kroz new{x.a, x.b, ..} tebi nije dostupan jer se dinamicki generise pri kompajliranju sa kripticnim imenom tako da ne mozes ni da znas u koji tip treba da castujes object.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 16:00 - pre 175 meseci
Doduse, ja sam vise mislio na kolicinu podataka do klijenta, posto se radi o Silverlight-u i WCF-u.
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 16:12 - pre 175 meseci
Citat:
Shadowed: Doduse, ja sam vise mislio na kolicinu podataka do klijenta, posto se radi o Silverlight-u i WCF-u.

je li ovo bas do silverlighta (ako jeste molim te pojasni) ili si mislio da je to zbog toga sto se radi o web servisu pa da se sto manje podataka prenosi preko net-a, odnosno da se trazeni objekt sto prije prenese?

Citat:
mmix: To sto rece shadowed (manje polja u select-u = manji SQL footprint) plus postoji razlika izmedju

from x in obj.TabelaA select new{x.a, x.b, ..}
i
from x in obj.TabelaA select new PodTabelaA(x.a, x.b,...)

a to je typing.

List<PodTabelaA> mozes da vratis van metoda za ucitavanje i onda mozes da ih konzumiras bez refleksije. Ne znam o kakvog castingu iz List<Object> si pricao, ali tip generisan kroz new{x.a, x.b, ..} tebi nije dostupan jer se dinamicki generise pri kompajliranju sa kripticnim imenom tako da ne mozes ni da znas u koji tip treba da castujes object.


Hmmmm malo si me zbunio a ne mogu sada kopati po projektima , ali koliko se sjecam ja sam pravio funkcije (mvc arhitektura, sloj kontroler) na nacin
Code:
public Object GetNesto(){
      var query = (from x in y.TabelaA select new {x.id, x.ime,...});
      return query;
}

pa bih onda kasnije u GUI sloju ovaj Object castao u tip koji je meni trebao (jer sam znao sto ovaj OBject sadrzi u sebi, odnosno u koji tip ga mogu bezjedno castati). Mislis da je ovo pogresno te da cu na ovaj nacin ubuduce napraviti runtime bug koji ce mi zivot popiti?
...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 16:48 - pre 175 meseci
Citat:
virtualVoid: pa bih onda kasnije u GUI sloju ovaj Object castao u tip koji je meni trebao (jer sam znao sto ovaj OBject sadrzi u sebi, odnosno u koji tip ga mogu bezjedno castati). Mislis da je ovo pogresno te da cu na ovaj nacin ubuduce napraviti runtime bug koji ce mi zivot popiti?


A koji je to tip ;) Implicitno generaisani LINQ tipovi su uvek proste strukture i nasledjuju samo Object, tako da mozes da ga castujes samo u object (sto radis) ili u njega samog (sto ne morzes da radis).

Prekopaj po projektima pa ces videti. Jedni nacin da iz takove object instance izvuces polje je refleksija (ako znas da ima polje a onda iz typeof(instance) izvucez fielddescriptor i preko njega izvuces vrednost polja).

shadowed, to sam i mislio pod footprintom, velicina result seta.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 17:19 - pre 175 meseci
Citat:
virtualVoid: je li ovo bas do silverlighta (ako jeste molim te pojasni) ili si mislio da je to zbog toga sto se radi o web servisu pa da se sto manje podataka prenosi preko net-a, odnosno da se trazeni objekt sto prije prenese?


Nije do Silverlight-a, vec jednostavno, svaki podatak koji se prenosi od servisa do klijenta se serijalizuje a ako imas vise property-a u klasi i serializovani rezultat ce biti veci pa pravis nepotreban protok.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kad kreirati tip na osnovu tabela?22.11.2009. u 17:31 - pre 175 meseci
Citat:
virtualVoid:
Code:
public Object GetNesto(){
      var query = (from x in y.TabelaA select new {x.id, x.ime,...});
      return query;
}

pa bih onda kasnije u GUI sloju ovaj Object castao u tip koji je meni trebao (jer sam znao sto ovaj OBject sadrzi u sebi, odnosno u koji tip ga mogu bezjedno castati). Mislis da je ovo pogresno te da cu na ovaj nacin ubuduce napraviti runtime bug koji ce mi zivot popiti?



Aaaa, cek, cek, sad ja vidim sta ti radis. Ti ne vracas podatke iz baze u Object, ti bukvalno vracas Queryable<T> Linq2SQL objekat. Bar je tako u ovom primeru koji si dao. Problem je sto se konkretan poziv SQL serveru desava pri evaluaciji Queryable<T> objekta, ne pri njegovoj deklaraciji, sto znaci da si ti pozivao SQL server iz GUI layera, sto je za pocetak konceptualno pogresno. decoupling + var = big trouble kad se ne pazi
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Kad kreirati tip na osnovu tabela?

[ Pregleda: 1811 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.