IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Windows Discussion :

Requête linq sur projet WPF MVVM Entity framework , temps d'exécution


Sujet :

Développement Windows

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 42
    Points : 38
    Points
    38
    Par défaut Requête linq sur projet WPF MVVM Entity framework , temps d'exécution
    Bonjour,

    J'ai une application WPF MVVM Base first de 2012.
    Cette application effectue des requêtes vers la BDD mais ces requêtes mettent bien 2/3 minutes à finir.
    Grosso modo, pour chaque écran, je charge x utilisateurs (Il y a environ 25000 candidats).
    J'ai essayé d'ajouter des filtres pour éviter de tout charger mais le délais reste long et rend l'application un peu dépassé.

    Pour info voici globalement la pile d'appel :
    ViewModel -> business -> DataAccess -> linq

    C'est un projet que je récupère et au moins 5 stagiaires sont passés dessus. Du coup je ne peut pas faire de grosse transformation.
    J'ai regardé au niveau des procédures stockées mais j'ai laissé tomber cette solution.

    Avez-vous une idée pour accélérer le chargement ?

    Merci d'avance et bonne journée

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Hello,

    remonté 25000 lignes devraient être assez rapide.

    Il faut savoir d'où vient le problème.

    Où est hébergé la base de donnée, peut être c'est la connexion entre ton ordi et la base qui est lente, la requête qui n'est pas bonne, ou l'affichage qui est lent.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2017
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2017
    Messages : 42
    Points : 38
    Points
    38
    Par défaut
    Bonjour

    La base de données est sur un serveur local.
    La connexion entre les pc qui ont l'application et le serveur me semble bonne.
    et pour les requêtes, voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            public List<tbl_offrecandidat> GetCandidatAContacter()
            {
                return _dataAccessManager.Context.tbl_offrecandidat.Where(t => t.IdStatutOffreCandidat == 2).ToList();
            }
    et la vue associée :
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <dxg:GridControl x:Name="grid" ShowBorder="False" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" AutoGenerateColumns="None" 
                             ItemsSource="{Binding ListCandidatures, NotifyOnSourceUpdated=True}" 
                             SelectedItem="{Binding SelectedCandidatures, Mode=TwoWay}" Grid.Row="1" Uid="GridCandidature"
                             FilterString="{Binding FilterString, Mode=TwoWay}">
     
                <dxg:GridControl.Columns>
                    <dxg:GridColumn FieldName="tbl_candidat.UNom" Header="Nom" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="tbl_candidat.UPrenom" Header="Prénom" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="tbl_offre.Reference" Header="Référence" SortOrder="Ascending" SortIndex="0" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="tbl_offre.tblfonction.LIBELLEFONCTION" Header="Poste" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="tbl_offre.tbl_agence.LibelleAgence" Header="Agence" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="tbl_statutoffrecandidat.NomStatutOffreCandidat" Header="Statut Candidature" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="tbl_offre.RespOffre.FullName" Header="Responsable Offre" AllowBestFit="True" />
                    <dxg:GridColumn FieldName="TypeCandidatureLibelle" Header="Type de candidature" Width="125" FixedWidth="True" />
                    <dxg:GridColumn FieldName="LastDateAction" Header="Action à faire le" AllowBestFit="True">
                        <dxg:GridColumn.EditSettings>
                            <dxe:TextEditSettings DisplayFormat="g" />
                        </dxg:GridColumn.EditSettings>
                    </dxg:GridColumn>
                    <dxg:GridColumn FieldName="Correcteur.FullName" Header="Référent" AllowBestFit="True" />
                </dxg:GridControl.Columns>
                <!--Cette partie représente la vue et associe le double click à une commande-->
     
                <dxg:GridControl.TotalSummary>
                    <dxg:GridSummaryItem FieldName="tbl_candidat.UNom" SummaryType="Count"
                                          DisplayFormat="Nombre de candidatures : {0}" Visible="true" />
                </dxg:GridControl.TotalSummary>
     
                <dxg:GridControl.View>
                    <dxg:TableView ShowTotalSummary="True" ShowAutoFilterRow="false" AllowEditing="False" 
                                   NavigationStyle="Row" ShowGroupPanel="False" AutoWidth="True" 
                                   ShowVerticalLines="False" ShowIndicator="False"
                                   ShowFilterPanelMode="Never" ShowHorizontalLines="False" Background="Black">
                        <!--<dxg:TableView.CellStyle>
                            <Style TargetType="dxg:CellContentPresenter">
                                <Setter Property="Foreground" Value="White" />
                                <Setter Property="Background" Value="#3C3C3C" />
                            </Style>
                        </dxg:TableView.CellStyle>-->
                    </dxg:TableView>
                </dxg:GridControl.View>
     
                <dxg:GridControl.InputBindings>
                    <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ActionRowCommand}" />
                </dxg:GridControl.InputBindings>
            </dxg:GridControl>

    Rien de vraiment spécifique, ça reste classique je trouve.
    En mode débug, en pas à pas, c'est vraiment lors de l’exécution de la requête linq que ça mouline.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Clairement la requête n'a rien de complexe, tu peux utiliser SQL Profiler pour voir ce que Entity envoie ou : https://docs.microsoft.com/fr-fr/ef/...ectedfrom=MSDN

    tu auras les temps d'éxécution grace à ca.

    Pour ton context comment il est initialisé et refermé ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/12/2017, 15h40
  2. [Débutant] Requêtes Linq sur mesure
    Par guilty80100 dans le forum Linq
    Réponses: 2
    Dernier message: 08/03/2013, 19h36
  3. [Débutant] Wpf and Entity framework
    Par idir-mz dans le forum C#
    Réponses: 4
    Dernier message: 29/08/2012, 21h47
  4. requête linq sur base se données MySql
    Par fripon76 dans le forum Linq
    Réponses: 1
    Dernier message: 02/09/2010, 09h43
  5. Réponses: 5
    Dernier message: 04/05/2009, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo