2015-11-02 29 views
5

Ten temat jest tutaj kilka razy, ale brak odpowiedzi daje mi opcję uniknięcia tego problemu w EF.Błąd ostrzegawczy 6002: tabela/widok nie ma zdefiniowanego klucza podstawowego

Moja uwaga:

Ostrzeżenie Błąd 6002: Tabela/view 'ADContainersWithEnvironmentsView' nie posiada klucza podstawowego. Klucz został wywnioskowany i definicja została utworzona jako tabela/widok tylko do odczytu.

Zasadniczo używam bazy danych pierwszego podejścia z EF w moim projekcie.

mam widok:

CREATE VIEW [dbo].ADContainersWithEnvironmentsView 
AS 
WITH ADContainerWithEnvironments(Id, LinkedEnvironmentId) 
AS 
(
    SELECT adc.Id, adc.LinkedEnvironmentId 
    FROM ADContainer AS adc 
    WHERE ParentAdContainerId IS NULL 

    UNION ALL 

    SELECT subAdc.Id, parentAdc.LinkedEnvironmentId 
    FROM ADContainer AS subAdc 
    INNER JOIN ADContainerWithEnvironments parentAdc 
    ON subAdc.ParentAdContainerId = parentAdc.ID 
) 
SELECT ISNULL(Id,-1) AS Id, LinkedEnvironmentId FROM ADContainerWithEnvironments 

jak zostało explaind w innych tematów trzeba określić PK moim zdaniem z ISNULL (Id, -1) jako identyfikator

również zaznaczyć, że na diagramie moja Id jak Entity Key sprawdź mój ekranu enter image description here

To ostrzeżenie mam dla wszystkich moich 10 widoków. Po moich zmianach zamykam studio graficzne, nawet restartuję komputer lub próbuję go na innym komputerze :) ale ostrzeżenie nadal tam jest.

Dzięki za pomoc.

Odpowiedz

0

Otrzymujesz ostrzeżenie, ponieważ widok nie ma Klucza głównego w takim samym znaczeniu, w jakim mają je tabele. Ponieważ prawdopodobnie nic nie wstawisz w widoku, możesz zignorować ostrzeżenie i użyć widoku, aby po prostu zapytać.