[C# - WPF - Linq] Uitleg over binding path....

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-09 09:47

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Allen,

ik ben mij aan het verdiepen in het hele WPF/Linq gebeuren en had hiervoor op internet reeds wat gezocht en een 'tutorial' ivm master-detail gevolgd.

Doel van de test-applicatie:

Bij het klikken op een 'region' wordt er automatisch in een volgende lijst het 'divisions' van deze regio geladen. Bij het klikken op een division zal er in een andere lijst de 'city's behorend tot deze division geladen worden.

Dit alles komt uit een database met 3 tabellen: Region, Division, City (met bijhorende relatie's e.d. natuurlijk).

De applicatie op zich werkt wel, maar snap niet goed hoe het kan dat de applicatie op basis van 1 linq-query de bijhorende divisions/city's kan "weten"?

Zal dit geen performance issue zijn wanneer je met grote databases werkt? Mijn inziens wordt bij het uitvoeren van de linq-query alle data uit alle tabellen opgehaald? of zie ik dit verkeerd?

Volgende xaml code is een vb. van de division & city listbox.... Enige uitleg ook hier gevraagd over de '{Binding Path=xxxx} regel'tjes..... --> op basis hiervan ga ik ervan uit dat linq inderdaad ALLE data uit de DB opvraagt?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        <Grid x:Name="gridMasterDetail">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        
        <DockPanel Grid.Column="0">
            <Label DockPanel.Dock="Top">Region</Label>
            <ListBox ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
        </DockPanel>
        <DockPanel Grid.Column="1">
            <Label DockPanel.Dock="Top">Division</Label>
            <ListBox ItemsSource="{Binding Path=Divisions}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
        </DockPanel>
        <DockPanel Grid.Column="2">
            <Label DockPanel.Dock="Top">City</Label>
            <ListBox ItemsSource="{Binding Path=Divisions/Cities}" IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"/>
        </DockPanel>
    </Grid>


en bijhorende C# code:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
 public partial class Window1 : Window
    {
        AddressesDataContext _context = new AddressesDataContext();

        public Window1()
        {
            InitializeComponent();

            gridMasterDetail.DataContext = from c in _context.Regions 
                                           select c;
        }
    }


*Ik hoop dat dit soort vragen ook thuis horen op een forum, ook al gaat het dan niet om probleem-vragen...* O+

[ Voor 5% gewijzigd door dj_vibri op 12-06-2009 11:44 . Reden: meer xaml code ivm grid-name ]

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 11:35

mOrPhie

❤️❤️❤️❤️🤍

Ervanuit gaande dat je LINQ to SQL gebruikt:
Om daar meer over te weten kun je de volgende google keywords gebruiken:

- Linq to sql lazy loading
- Linq to sql deferred loading
- Linq to sql prefetch
- Linq to sql delayed

Voorbeelden van artikelen:
http://blogs.microsoft.co...ed-loading-lazy-load.aspx
http://www.davidhayden.co...henNeededPerformance.aspx
http://www.davidhayden.co...ropertiesPerformance.aspx

Ook gewoon de MSDN is een goede bron van info voor linq to sql.

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-09 09:47

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Thxn alvast voor handige keywords :) Als je er niet in thuis bent kan je blijven zoeken natuurlijk :)

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 11-09 14:44
Het uitvoeren van een LINQ-SQL query resulteert niet direct in een resultaatset, maar blijft een expression tree, je kunt dus je eerste linq query gewoon ergens opslaan, en er later criteria aan toevoegen, zoals je doet bij een master/detail binding binnen WPF. Hij haalt alleen de noodzakelijke gegevens op op basis van je criteria, en niet de rest.