Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 2.699 pregleda

Najnovija ↓

Kad kreirati tip na osnovu tabela? 22.11.2009. u 09:43 · pre 206 meseci #1
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 :)
Potpis
...
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 12:13 · pre 206 meseci #2
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?
Potpis
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ć
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 14:21 · pre 206 meseci #3
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????
Potpis
...
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 14:43 · pre 206 meseci #4
Pa, ako koristis Linq2SQL onda vec imas klase koje odgovaraju tabelama, samo ih nisi pravio rucno nego ti je alat sam obavio stvar.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 15:10 · pre 206 meseci #5
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??????
Potpis
...
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 15:17 · pre 206 meseci #6
Bez nekog detaljnijeg pregleda tutorijala, pretpostavljam da bi smanjio kolicinu podataka koje prenosi.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 16:51 · pre 206 meseci #7
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.
Potpis
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ć
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 17:00 · pre 206 meseci #8
Doduse, ja sam vise mislio na kolicinu podataka do klijenta, posto se radi o Silverlight-u i WCF-u.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 17:12 · pre 206 meseci #9
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?
Potpis
...
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 17:48 · pre 206 meseci #10
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.
Potpis
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ć
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 18:19 · pre 206 meseci #11
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.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Kad kreirati tip na osnovu tabela? 22.11.2009. u 18:31 · pre 206 meseci #12
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
Potpis
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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme