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

LINQ to SQL - razna pitanja

[es] :: .NET :: LINQ to SQL - razna pitanja

Strane: 1 2

[ Pregleda: 7662 | Odgovora: 29 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon LINQ to SQL - razna pitanja24.04.2008. u 21:32 - pre 193 meseci
Znam da sve ovo postoji u dokumentaciji. Medjutim, treba mi brzo pa mi je velika usteda u vremenu ako dobijem odgovore dok radim drugi deo posla. A pretpostvaljam da ce i drugima koristiti isti odgovori.

Elem, imam projekat koji trebam brzo da uradim. Nije nesto komplikovan, ali je vreme kljucna stvar. Zbog toga sam hteo koristiti linq to sql jer bi mi pola vremena oduzelo prevljenje klasa i metoda za citanje upis istih iz/u bazu. Ali je linq dosta nov za mene.
Nakon sto napravim bazu, mogu u O/R Designer-u prevuci tabele i dobiti klase. Znam i kako da prosirim klase preko parcijalnih klasa. Medjutim, (za sada) bi mi trebao neki jednostavan primer kako da ucitam podatak iz baze u objekat, imenim i snimim. Takodje, kreiranje novog objekta i upis u bazu.
Evo za jednostavan primer baze gde postoje tabele Adrese (sa kolonama ID (p.k.), ulica, gradID) i Gradovi (ID(p.k.), ImeGrada). Naravno, Adrese.gradiD je povezano sa Gradovi.ID.
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Re: LINQ to SQL - razna pitanja24.04.2008. u 21:52 - pre 193 meseci
Ako vec imas tight deadline i moras da zavrsis to na vrijeme, nemoj pokusavati da ucis novu tehnologiju. Ono sto mozes da odradis sa Linq je slicno kao sto bi uradio kad bi generisao code iz baze podataka. Ja bih ti preporucio da vidis alatku koja se zove CodeSmith, ako je vec nisi koristio i da ti napravi na brzinu sve klase koje su ti potrebne tako da onda ti ostaje samo da zavrsis custom dio posla. CodeSMITH je dzabe za 30 dana, a ako ti treba za duze, vjerovatno se i to moze naci negdje na netu. Linq nije tezak za nauciti, jednostavno se nakaci na bazu i napravi "entiites" u tvom kodu koje ti ne vidis ali posto koristis linq on moze da ih vidi. CodeSmith ce ti uraditi isto, samo sto ces imati kao i prije code u svojim klasama.

NAdam se da ovo pomaze, a ako si bas zapeo za Linq, mogu ti postaviti link za dzabe knjigu koju je MS postavio za download.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 00:15 - pre 193 meseci
Vec sam skinuo tu knjigu ranije, nasao sam primer koji mi pomaze, ali sam batalio linq iz drugih razloga - ne znam da li cu na hosting-u imati to, a malo je specificna situacija, pa ne znam da li cu moci da biram hosting.
To inace radim u php-u, ali sam poshizeo i sad van posla hocu da uradim u .net-u i da im dam gotovo :)
Taj CodeSmith cu pogledati neki drugi put. Tnx.
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
77.222.12.*

Sajt: www.azalea-maritime.com


Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 02:27 - pre 193 meseci
Ja bih UPRAVO preporučio LINQ koji može biti kompleksan onoliko koliko ti želiš.

Elem, pitanje je kako si navikao da barataš sa podacima? Da li preko BindingSource-a, BindingNavigator-a i DataSet-a?

U svakom slučaju - što se baratanja sa podacima tiče - u par linija s' obzirom da je kasno, pa možemo nastaviti sjutra. Recimo da imamo formu i negdje u vrhu deklarišemo i instanciramo objekat:

Code:

Private DB As New AdresarDBDataContext(My.Settings.AdresarConnString)

uz pretpostavku da se u My.Settings.AdresarConnString nalazi naš string konekcije. Sada na nivou forme možemo koristiti data-kontekst baze gdje želimo. Savjetujem ti da, dok testiraš LINQ - prije baratanja sa DB objektom, koristiš osobinu log-ovanja aktivnosti data konteksta u konzolni Output prozor. Ovo ćeš postići instrukcijom:

Code:

DB.Log = Console.Out


Tako ćeš jasno moći da vidiš koje SQL upite pokreće LINQ data kontekst pri baratanju sa podacima.

Elem... Treba da dodamo podatke u bazu? Radimo sa objektima:

Code:

DB.Grads.InsertOnSubmit(New Grad With {.NazivGrada = "Beograd"})
DB.Grads.InsertOnSubmit(New Grad With {.NazivGrada = "Novi Sad"})
DB.Grads.InsertOnSubmit(New Grad With {.NazivGrada = "Kragujevac"})
DB.SubmitChanges()


to je sve što se tiče dodavanja novih podataka u bazu. Može, naravno i staromodnije:

Code:

Dim objekat As New Grad
objekat.NazivGrada = "Beograd"
DB.Grads.InsertOnSubmit(objekat)


Može i drugačije, ali da ne komplikujem sad. Važno je shvatiti da DB.SubmitChanges() vrši sav hard-work: Insert, Update, Delete. Prije poziva ove procedure, možeš dobiti informacije o tome što čeka na dodavanje, izmjenu, brisanje upotrebom svojstva: DB.GetChangeSet (Inserts, Updates, Deletes).

Kod dobijanja podataka iz baze - najprostije (recimo da treba rezultat prikazati u grid-u pod imenom DataGridView1):

Code:

Me.DataGridView1.AutoGenerateColumns = True

Dim gradovi = From grad in DB.Grads Select grad
Me.DataGridView1.DataSource = gradovi


Preporučujem, ipak, vezivanje grid kontrole za BindingSource i potom punjenje BindingSource-a podacima iz LINQ upita. Pokušaću da napravim jedan kratak tutorijal koji pokazuje sve ovo, samo sa master/detail grid-ovima i 10 linija kod-a u vr' glave. No sad odoh da spavam ... :-)
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 10:19 - pre 193 meseci
Zahvaljujem, to je tacno ono sto mi je trebalo :)
Jos se predomisljam da li cu koristiti linq, ne znam da li hosting to ima, a ako koristim neki drugi... Ne znam kakvo ce misljenje boss imati o tome :)
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
*.crnagora.net.

Sajt: www.azalea-maritime.com


Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 10:57 - pre 193 meseci
Uh, sad tek vidim da je Web u pitanju ... U ASP-u imaš još bolji mehanizam za rad sa LINQ-om od Windows formi - LinqDataSource. Predlažem da pogledaš odličnu seriju video tutoriala na: http://www.asp.net/learn/LINQ-videos/

Bojim se da hosting provajderi generalno nisu toliko raspoloženi za update .NET Framework-a (isto kao što je to bio slučaj sa PHP-om i verzijama 4.x). Ako si "zapeo" na .NET 2.0 - možeš isto tako relativno brzo doći do rezultata kroz DataSet i TableAdapter. Jedino što nećeš moći da izbjegneš SQL upite upotrebom LINQ-a. Ako ti treba primjer za ovo - javi.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 11:02 - pre 193 meseci
LINQ primeri :
http://msdn2.microsoft.com/en-us/library/bb425822.aspx
http://msdn2.microsoft.com/en-us/library/bb308959.aspx

Ne stizem da pregledam sve ..jer ima mnogo da se skroluje :)
Svodi se uglavnom da imas mali sql-engine syntax u tvom c#3.5 kodu koji barata svim podacima na "lokalnom nivou") ;
da ilustrujem ovaj primer :
Code:

using System;
using System.Linq;
using System.Collections.Generic;

class app {
  static void Main() {
    string[] names = { "Burke", "Connor", "Frank", 
                       "Everett", "Albert", "George", 
                       "Harris", "David" };

    IEnumerable<string> query = from s in names 
                               where s.Length == 5
                               orderby s
                               select s.ToUpper();

    foreach (string item in query)
      Console.WriteLine(item);
  }


//BURKE
//DAVID
//FRANK



Sto znaci da podaci ne moraju uvek biti na sql-u (xml ,user defined class...bilo sta .)
npr. IQueryable<T> , IEnumerable<T>
Svidja mi se kombinovanje template kolekcija i functor klasa za logicke uslove
Code:

Func<string, bool>   filter  = s => s.Length == 5;
Func<string, string> extract = s => s;
Func<string, string> project = s => s.ToUpper();

IEnumerable<string> query = names.Where(filter) 
                                 .OrderBy(extract)
                                 .Select(project);



jer veoma olaksava kodiranje i izgled koda a samim tim i odrzavanje kad se logicki uslovi menjaju u upitima

Sto se tice LINQ-to SQL sintaksa ustvari ostaje "skoro ista" kao i kad kucas na mssql-u (samo je select prebacen ispod)
Posle toga kako @djoks rece DB.SubmitChanges() koji radi ostali deo posla kao sto su konekcije(open i close)
insert ,update,delete commande od getchanges() itd ..) a taj deo tebi najvise treba kolko sam skapirao ..

[/code]



Viva lollapalooza
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 11:42 - pre 193 meseci
Djoks, na 2.0 nisam zapeo ;)
Linq mi je trebao samo zbog brzeg stancanja klasa, jer je to u pocetnom delu cista daktilografija :)
Hm, na kraju moze da ispadne ova tema fin skup resursa/primera za linq.
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 12:04 - pre 193 meseci
Ako ti je stvarno deadline onda nemoj raditi u linq-u pogotovu ako ne znas da li ce to svideti boss-u i da li ima na hostingu:)
Idi na sigurnu varijantu
Davno sam pisao dbaccess klase u c# za jedan projekat koje su generisale
update insert i delete komande (za SQLProvider i OleDBProvider) kao i pozivanje stored proc a sql-u
Medjutim to je bilo radjeno odavno u .NET 1.1 i radilo je .NET 2.0 frameworku ..

Ako hoces mogu da ti bacim na mejl (ne bih da kacim ovde da ne bih deplasirao ovako lepu temu )
pa da pogledas da izvuces nesto ako nadjes sto ce da ti skrati put.
Cini mi se koliko se secam da joj treba jos dorade (nije bas bug-free)


Viva lollapalooza
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
77.222.9.*

Sajt: www.azalea-maritime.com


Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 12:14 - pre 193 meseci
Pogrešno sam se izrazio kada sam pisao "zapeo" - mislio sam: ako si vezan za .NET 2.0 i nemaš drugog izbora.

Ne znam zašto bi pisao sopstvene klase za baratanje podacima i ULUDO potrošio silno vrijeme na implementaciju raznoraznih interfejsa koje DataSet/DataTable već sasvim lijepo imaju? Radije iskoristi GUI za kreiranje DataSet-a i formiranje odgovarajućih DataTable Select/Update/Insert/Delete komandi (bilo da su to SP ili SQL upiti) - i dobićeš hijerarhijsku strukturu koju potom možeš obogaćivati kako god želiš (kroz dodatne upite, kroz expression kolone, dodavanjem sopstvenih metoda i svojstava kroz parcijalne klase itd.). Ne znam zašto tjerate čovjeka da izmišlja toplu vodu, kad sve već ima na gotovo, a rok je tanak!?
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 12:25 - pre 193 meseci
Odgovor bi bio dajem ono sto imam ...
Tada kad sam koristio tu klasu bio je .NET1.1 i koristio sam TypedDataSet kao podatke i kod koji bi skratio upotrebu ADO.NET- koda u programu(SQLConnection,SQLCommand,SQLParameter itd ..)
al mi se nije svidela upotreba "SQlCommandBuilder"-a jer me je zezao u nekim trenucima pa sam odlucio da sam napisem ..
Viva lollapalooza
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-3.sezampro.yu.



+395 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 17:06 - pre 193 meseci
Citat:
@deerbeer
Sto znaci da podaci ne moraju uvek biti na sql-u (xml ,user defined class...bilo sta .)
npr. IQueryable<T> , IEnumerable<T>
Svidja mi se kombinovanje template kolekcija i functor klasa za logicke uslove


A evo zasto .... kolko sam uspeo dosad da proucim iz primera:
Kod mozda nije 100% tacan nemam sad kompajler pri ruci :(
Svaka ispravka i komentar je dobrodosao ..

Code:

 // npr imam kolekciju contact-a u xml fajlu 
<Contacts>
   <Contact>
       <name></name>
       <address></address>
        <phone></phone>
   </Contact> 
.... 
...
</Contacts> 

XElement contacts = XElement.Load(@"c:\myContactList.xml");
                       
IEnumerable<string> query = from c in contacts.Elements("contact")
                                    where   (string) c.Element("address").Element("state") == "WA"
                                    orderby (string) c.Element("name")
                                    select  (string) c.Element("name");

        
    foreach (c in query) {
           Console.WriteLine(c);
        }
               
IEnumerable<XElement> query = from   c in contacts.Elements("contact"),
                                                     ph in c.Elements("phone")
                                            where   (string) c.Element("address").Element("state") == "WA" &&
                                                     p  h.Value.StartsWith("206")
                                             orderby (string) c.Element("name")
                                             select  c;
 //vracamo recordset od xml-a 
foreach (x in query){
 Console.WriteLine(x);
}



Deluje mi skroz super da ne moram da radim query xml-a preko XPath-a
Podsetite se njegove ruzne sintakse ..pogotovu ako ulaze u obzir i neki logicki uslovi

A ovo je mozda glavni benefit od LINQ-a kako kaze MS :
Citat:

The benefit for data source implementers of reusing this deferring functionality by implementing the IQueryable<T> interface is obvious.
To the clients who write the queries, on the other hand, it is a great advantage to have a common type for remote information sources.
Not only does it allow them to write polymorphic queries that can be used against different sources of data,
but it also opens up the possibility for writing queries that go across domains.


Code:

 namespace System.Linq {
   using System;
   using System.Collections.Generic;

 public static class Enumerable {
     public static IEnumerable<T> Where<T>(
                    this IEnumerable<T> source,
                   Func<T, bool> predicate){

         foreach (T item in source)
                if (predicate(item))
                  yield return item;
          }
        }
      }
        
//Ovde je Func<T,bool> kao logicki operator sa bilo kojim tipom ...         
        
string []names  = {"Pera","Mika","Laza","Mirko","Slavko" };   
Func<string,bool> manjeOd6 = s => s.Length < 6 ; 
IEnumerable<string> query = Enumerable.Where(names,manjeOd6);
       
int [] nizinta = {32,2,34,3,54} ; 
Func<int,bool>  veceod10 = s => s > 10 ; 
IEnumerable<int> query = Enumerable.Where(nizinta,veceod10);

 //Ako to sve upakujemo kao funkciju da izgleda kao "SELECT" upit to bi izgledalo 
 public static IEnumerable <T> Select (IEnumerable<T> source,Func<T,bool> where1,Fucn<T,bool> where2 ..itd...) 

 //ili mozda jos lepse  kao niz Funktora 
//ne znam da li ovo dozvoljava c# 3.5 kompajler .
 public static IEnumerable <T> Select (IEnumerable<T> source,params Func<T,bool>[] wheres_array) ; 

       
//ako imamo kolekciju objekata 
// najbolje je naslediti IQuerable<T> sa kojom dolazi jos mnostvo opcija za expression izraze,agregacije,sorting-om itd .....  
public MyQueryEngine<T> : public IQuerable<T> 
  


Viva lollapalooza
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 18:08 - pre 193 meseci
Re vezanost za 2.0

Posto je .NET 3.5 u osnovi .NET2.0 sa novim klasama, a asp.NET i dalje radi pod 2.0 enginom, teorijski bi mogao da ukljucis "Copy Local" nad svim .NET3.5 referencama i da te .NET3.5 asemblije koji sadrze LINQ ubacis u bin folder i tako dobijes .NET3.5 web aplikaciju pod .net2.0 hostingom Ne vidim ni jedan razlog zasto to ne bi radilo


Probacu kasnije kad dodjem kuci


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: 12846



+4783 Profil

icon Re: LINQ to SQL - razna pitanja25.04.2008. u 22:21 - pre 193 meseci
Haha, ne moz' da omane da pomenes da je 3.5 zapravo 2.0+ ;)
Naravno, ne smeta, s' obzirom da si u pravu.

Uradicu sa linq-om, znam za hosting koji podrzava, nisam ga koristio ali pretpostavljam da je dobar, ili bar dovoljno dobar s' obzirom da sam naisao na njih preko preporuke na MS-ovom sajtu (ne mogu se setiti tacno kako se zove). Zavrsicu stvar u .net-u i dati im, pa neka vide hoce li to ili da nastavimo peripetije sa php-om i cms-ovima :)
A i bar cu imati jednu .net referencu vise, posto me udavise php-om :)
 
Odgovor na temu

01011011

Član broj: 561
Poruke: 2341
65.216.70.*



+2 Profil

icon Re: LINQ to SQL - razna pitanja29.04.2008. u 18:04 - pre 193 meseci
Samo da ti javim da LINQ nije standard, ukoliko radis neku aplikaciju, to je nesto sto mikrosoft pokusava da poturi developerima kako bi se na kraju sklonio SQL, sto se nece dogoditi tako imas to u obziru.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: LINQ to SQL - razna pitanja03.05.2008. u 10:28 - pre 193 meseci
Ako jedan objekat ima adresu (znaci, klasicno, ulica, grad, drzava...), drzave su u posebnoj tabeli, interesuje me i za kreiranje novog obekta i update postojeceg, kako da ga najbolje da izvedem da koristi postojeci red a ne kreira novi? Da li je dovoljno da objekat.Country.ID postavim na neku vrednost koja postoji u bazi pa ce on biti dovoljno pametan da iskoristi to postojece?
Takodje, grad se isto cuva u zasebnoj tabeli, ali da ne bih unosio sve gradove sveta na pocetku, ostavljam textbox u koji se upisuje (umesto dropdown-a kod drzave). Ono sto mi je potrebno je da kada se upise postojece ime koristi postojeci unos u bazi, kada se upise nesto sto ne postoji, prvo se doda grad.
Sad, znao bih ja to da izvedem na ovaj ili onaj nacin, al' me zanima kako se to standardno radi :)
 
Odgovor na temu

Djoks
Djordje Najdanovic
Software Developer
Azalea Maritime

Član broj: 1630
Poruke: 268
77.222.25.*

Sajt: www.azalea-maritime.com


Profil

icon Re: LINQ to SQL - razna pitanja03.05.2008. u 10:51 - pre 193 meseci
Što se tiče izmjene i brisanja podataka iz LINQ-a (bilo kroz uskladištene procedure ili bez njih) - evo par primjera: http://msdn.microsoft.com/en-us/library/bb386927.aspx

Za grad i textbox: mislim da će ti odgovor na ovo pitanje takođe dati link odozgo. Ako ne - napisaću ti jedan primjer.
 
Odgovor na temu

Mikelly

Član broj: 16730
Poruke: 389
77.222.14.*



Profil

icon Re: LINQ to SQL - razna pitanja03.05.2008. u 14:10 - pre 193 meseci
Malo i ja da se ukljucim u raspravu...

Svidja mi se ovi LINQ. Koristeci LINQ to OBJECTS skratio sam huffman kod koji sam u c++ realizovao sa dvostruko povezanim listama sa ne znam ni ja koliko linija koda i pomocnih funkcija na nevjerovatnih desetak linija koda. Ekstra. Sve one MIN, COUNT, SELECT funkcije nad kolekcijama su super.

E sad me interesuje LINQ to SQL, bar dok ne dodje ADO.NET Entity Framework i LINQ to ENTITIES. Najvise me interesuje kako da radim DATA BINDING. Jer, sve one klase koje generise O/R Designer izlazu samo dva dogadjaja: property changing i property changed (i cini mi se da u property changing dogadjaju ne mogu da vidim koji se property mijenja). Sto ja treba da radim, da punim sve sto procitam u neki BindingSource? A kako da izvedem parent-child prikaze? Mogu vala napunit novi BindingSource child zapisima, ali kako da povezem dva BindingSource-a?

LINQ to SQL je ok, zapisi su objekti, prirodnije je i lakse radit s njima, mada su i tipizirani dataset-ovi standardnog ado.net-a imali neke takve karakteristike, ali mu fali sva sila stvari sto su imali datarow i datatable objekti. Ne znam, na prvi pogled mi se cini da je istu stvar mnogo lakse izvesti u ado.net-u nego koriscenjem LINQ to SQL-a (mada vjerovatno, ili prije sigurno to mu nije ni namjena, vec samo da eliminise SQL upite iz aplikacije).

To su moji utisci, ne znam, mozda i grijesim...

Pozdrav.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: LINQ to SQL - razna pitanja03.05.2008. u 16:43 - pre 193 meseci
Mikelly, generisane klase mozes prosiriti kako god zelis preko parcijalnih klasa.

Djoks, dobra je strana, ali mi ne pomaze kod ove konkretne stvari. Isprobavacu pa cu videti kako se ponasa :)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: LINQ to SQL - razna pitanja03.05.2008. u 16:47 - pre 193 meseci
Nema tu neke mudrosti, ako je objekat vezan na Country tabelu, imaces efektivno dva polja (pod uslovom da si ih deklarisao u objektu ili si klasu objekta definisao kroz dbml fajl), i onda objekat mozes da vezes na Country na dva nacina,

objekat.CountryId = <postojeci id zemlje> pod uslovom da je COuntryId kljuc
ili
objekat.Country = instanca Country objekta koji si ili kreirao nov ili ucitao iz context-a

Citat:
Mikelly: E sad me interesuje LINQ to SQL, bar dok ne dodje ADO.NET Entity Framework i LINQ to ENTITIES. Najvise me interesuje kako da radim DATA BINDING. Jer, sve one klase koje generise O/R Designer izlazu samo dva dogadjaja: property changing i property changed (i cini mi se da u property changing dogadjaju ne mogu da vidim koji se property mijenja). Sto ja treba da radim, da punim sve sto procitam u neki BindingSource? A kako da izvedem parent-child prikaze? Mogu vala napunit novi BindingSource child zapisima, ali kako da povezem dva BindingSource-a?


Ne moras da vezujes dva binding source-a, oni podrzavaju hijerarhijske liste sto LINQ entiteti jesu. Npr u njegovom primeru, Country tabela je vezana za City tabelu, kad izvrsis:

var countries = from c in db.Country select c;
bindingSource.DataSource = countries;

izvrsio si bindovanje i svaki element iz countries ima property Cities koji je IQueryable interfejs koji ucitava gradove koji su vezani za tu zemlju. Naravno svako referenciranje Cities propertija ce izazvati po jedan SQL select u bazu pa je u ovim slucajevima mozda pametnije pre-loadovati sve child entitete cime ce se smanjiti broj SQL skripti koje se izvrse

Code:

DataLoadOptions lo = new DataLoadOptions();
lo.LoadWith<Country>(c => c.Cities);
db.LoadOptions = lo;
var countries = from c in db.Country select c;
bindingSource.DataSource = countries;


Ako bindovani element podrzava hijearhijske liste imaces multi-level prikaz. Fora je jedino sto je binding malo otezan iz samog dizajnera posto je binding dialog u visual studiu malo glup pa ne vidi nista dublje od prvog nivoa, a ni same fabricke kontrole nisu nista mudrije ukljucujuci tu i grid kontrolu. Ja npr koristim Infragistics grid koji to podrzava i dobijam rezulate lepo hijerarhijski:


jedino sto za sada fali je cross-table mapping sto ce valjda da resi taj Entity Framework, al otom potom. Ako bas hoces mozes vec sad da iskoristi LINQ for objects preko LLBLGen generisanih entiteta.

Citat:
Mikelly: LINQ to SQL je ok, zapisi su objekti, prirodnije je i lakse radit s njima, mada su i tipizirani dataset-ovi standardnog ado.net-a imali neke takve karakteristike, ali mu fali sva sila stvari sto su imali datarow i datatable objekti. Ne znam, na prvi pogled mi se cini da je istu stvar mnogo lakse izvesti u ado.net-u nego koriscenjem LINQ to SQL-a (mada vjerovatno, ili prije sigurno to mu nije ni namjena, vec samo da eliminise SQL upite iz aplikacije).


LINQ for SQL zapravo olaksava DataSet operacije jer ne moras da generises table adaptere za svaku mogucu primenu koja ti treba, pride nisi mogao da ucitas samo podset polja, datatable ce uvek imati ona polja koja su definisana u tipiziranom datasetu cak iako ih ne ucitas kroz Query (ako uopste i uspes u tome, npr ne mozes preskociti polje iz tabele koje je NON NULL i nema default vrednost). Zamisli da je LINQ runtime dataset generator koji odmah generise tipiziranu tabelu i query koji je popunjava.
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ć
Prikačeni fajlovi
 
Odgovor na temu

[es] :: .NET :: LINQ to SQL - razna pitanja

Strane: 1 2

[ Pregleda: 7662 | Odgovora: 29 ] > FB > Twit

Postavi temu Odgovori

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