none
Clef primaire dans une vue SQLserver

    Question

  • Bonsoir,

    J'ai défini une vue dans ma BD.

    Lorsque je met à jour le modèle EntityFrameWork, j'ai le message suivant:

    Severity Code Description Project File Line Suppression State
    Warning  Error 6002: The table/view 'GP79dbBassin.dbo.VFabricants' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view. DBEFTest C:\DevTest2017\DBEFTest\DBEFTest\DBserviceBassin.edmx 1 

    Comment faire pour ajouter une clef primaire dans la vue?

    Voici la vue

    CREATE VIEW [dbo].[VFabricants]
     AS SELECT * FROM [FABRICANT]

    Voici la table

    CREATE TABLE [dbo].[FABRICANT] (
        [IDFABRICANT] INT         IDENTITY (0, 1) NOT NULL,
        [CODE]        NCHAR (20)  NOT NULL,
        [DESIGNATION] NCHAR (200) NOT NULL,
        PRIMARY KEY CLUSTERED ([IDFABRICANT] ASC)
    );

    Gérard

    jeudi 4 mai 2017 21:39

Réponses

  • Bonjour Gérard,

    C'est impossible de créer une clé primaire dans une vue. En revanche vous pouvez forcer à Entity Framework d'utiliser une colonne comme une clé primaire via le mot clé ISNULL.

    Pour forcer EF de ne pas utiliser une colonne comme une clé primaire utilisez le mot clé NULLIF;

    Exemple : 

    SELECT
      ISNULL(MyPrimaryID,-999) MyPrimaryID,
      NULLIF(AnotherProperty,'') AnotherProperty
      FROM ( ... ) AS temp

    J'espère que j'ai bien répondu à votre question.

    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse GP79 vendredi 5 mai 2017 12:54
    vendredi 5 mai 2017 11:57