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

Entity Framework Discussion :

[EDMX] Problème de d'importation de vue


Sujet :

Entity Framework

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut [EDMX] Problème de d'importation de vue
    Bonjour
    J'arrive pas à ajouter ma vue à mon application...

    voici l'erreur :

    Message 1 Aucune clé primaire n'est définie pour la table/vue 'ANANCE.dbo.V_HC_CODE'*; en outre, aucune clé primaire valide n'a pu être déduite. Cette table/vue a été exclue. Pour utiliser l'entité, vous devez passer en revue votre schéma, ajouter les clés appropriées et supprimer le commentaire associé.

    par ailleure, avec un LINQ to Entities je n'ai pas ce problème... Est-ce grave d'avoir deux liaisons de données l'un avec Entity data model où j'ai toutes mes tables et l'autre avec Linq to entities où j'ai ma vue ?

    voici le code SQL de ma vue :

    Code : 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
     
    WITH codes(code, id, position) AS (SELECT     CAST(LTRIM(dbo.PR.PR_ROOT + ISNULL(dbo.PR_H.H_ANUM, 'N/A')) AS VARCHAR(MAX)) 
                                                                                                      + CASE WHEN SUBSTRING(dbo.PR.PR_ROOT + dbo.PR_H.H_ANUM, 
                                                                                                      LEN(dbo.PR.PR_ROOT + dbo.PR_H.H_ANUM), 1) = '''' THEN '' ELSE '' + CHAR(10) END AS Expr1, 
                                                                                                      dbo.PR_H.H_ID, dbo.PR.PR_LEVEL
                                                                               FROM          dbo.PR_H INNER JOIN
                                                                                                      dbo.PR ON dbo.PR_H.PR_ID = dbo.PR.PR_ID INNER JOIN
                                                                                                      dbo.H ON dbo.H.H_ID = dbo.PR_H.H_ID
                                                                               WHERE      (dbo.PR.PR_LEVEL = 0)
                                                                               UNION ALL
                                                                               SELECT     codes.code + CAST(LTRIM(dbo.PR.PR_ROOT + ISNULL(suiv.H_ANUM, 'N/A')) AS VARCHAR(MAX)) 
                                                                                                     + CASE WHEN SUBSTRING(dbo.PR.PR_ROOT + suiv.H_ANUM, 
                                                                                                     LEN(dbo.PR.PR_ROOT + suiv.H_ANUM), 1) = '''' THEN '' ELSE '' + CHAR(10) END AS CODE, 
                                                                                                     suiv.H_ID, dbo.PR.PR_LEVEL
                                                                               FROM         dbo.PR_H AS suiv INNER JOIN
                                                                                                     dbo.PR ON suiv.PR_ID = dbo.PR.PR_ID INNER JOIN
                                                                                                     dbo.H ON dbo.H.H_ID = suiv.H_ID INNER JOIN
                                                                                                     codes ON suiv.H_ID = codes.id AND dbo.PR.PR_LEVEL = codes.position + 1), maxphrase AS
        (SELECT     id, MAX(position) AS maxposition
          FROM          codes
          GROUP BY id)
        SELECT     P.id, RTRIM(P.code) + CHAR(10) AS code
         FROM         codes AS P INNER JOIN
                                maxphrase AS M ON P.id = M.id AND P.position = M.maxposition

    Je trouve pas la raison....

    Merci par avance de votre aide

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Message 1 Aucune clé primaire n'est définie pour la table/vue 'ANANCE.dbo.V_HC_CODE'*; en outre, aucune clé primaire valide n'a pu être déduite. Cette table/vue a été exclue. Pour utiliser l'entité, vous devez passer en revue votre schéma, ajouter les clés appropriées et supprimer le commentaire associé.
    Je trouve pas la raison....
    C'est pourtant expliqué... vous devez indiquer manuellement une clé primaire pour votre vue car il ne parviens pas à la déduire lui même...

    Ce genre de problème existe aussi sous ENTITIES d'ailleurs (déjà expérimenté).

    Méfiez vous ces clés primaires sur vue sont très importantes...

    Une requête LINQ dessus peut vraiment vous ramenez n'importe quoi.

    Au passage évitez de gérer votre présentation côté SGBD ce n'est pas son rôle...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2006
    Messages : 205
    Points : 125
    Points
    125
    Par défaut
    Oo

    vous devez indiquer manuellement une clé primaire pour votre vue car il ne parviens pas à la déduire lui même...
    X

    Comment faites vous cela sachant que ma clé serait dans ma requête "id" ? d'habitude ENTITIES les déduits tout seul...

    Au passage évitez de gérer votre présentation côté SGBD ce n'est pas son rôle...
    Je suis d'accord avec vous seulement cette requête est beaucoup utilisée et les performance on rien à voir par rapport au chargement dans une app WPF (beaucoup plus rapide).


    Merci pour votre aide !

Discussions similaires

  1. Exporter/Importer des vues.
    Par Immobilis dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/02/2006, 13h22
  2. Problème sur export import fromuser touser
    Par tomsawyer dans le forum Oracle
    Réponses: 3
    Dernier message: 19/12/2005, 11h15
  3. Problème champ après import d'excel vers access
    Par David M dans le forum Access
    Réponses: 6
    Dernier message: 16/10/2005, 11h53
  4. importer des "vues" d acces en Interbase
    Par tchaman dans le forum InterBase
    Réponses: 1
    Dernier message: 18/01/2005, 17h56
  5. [VIEW] comment importer une vue ?
    Par _Eric_ dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 09/11/2004, 22h20

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