警告错误6002:表/视图没有定义主键

ton*_*nco 5 sql t-sql entity-framework entity-framework-4

这个主题在这里多次,但没有答案给我选择如何在EF中避免这个问题.

我的警告:

警告错误6002:表/视图'ADContainersWithEnvironmentsView'没有定义主键.已推断密钥,并将定义创建为只读表/视图.

基本上我在我的项目中使用数据库第一种方法.

我有看法:

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
Run Code Online (Sandbox Code Playgroud)

正如其他主题中的解释一样,我需要在ISNULL(Id,-1)AS Id的视图中指定PK

我还在Diagram中标记我的Id作为Entity Key检查我的截图 在此输入图像描述

我对所有10个观点都有这个警告.我的更改后,我关闭我的视觉工作室,甚至重新启动电脑,或在其他电脑上尝试:)但警告仍然存在.

感谢帮助.

Gio*_*rgi 1

您收到警告是因为视图没有与表具有主键相同的意义。由于您可能不会在视图中插入任何内容,因此您可以忽略警告并使用视图仅进行查询。